View Issue Details

IDProjectCategoryView StatusLast Update
0001496K18X001.00 SKB SWANSWpublic2024-07-11 13:48
Reporter(ALTech) Sangmin Choi Assigned To(ALTech) Sangmin Choi Due Date2022-06-23 09:44
PrioritynormalSeveritys4-minorReproducibilityN/A
Status closedResolutionreopened 
Summary0001496: Please build a test image.
DescriptionPlease build a test image.
TagsNo tags attached.
Attach Tags

Users monitoring this issue

User List (ALTech) Sangmin Choi , (SW) Dean Chiang , (SW) Jim Chen

Activities

(ALTech) Sangmin Choi

2022-06-22 08:46

developer  

(SW) Jason Ling

2022-06-22 10:14

developer   ~0010225

Hi Sangmin,

https://drive.google.com/file/d/1v1-Ijug6gPk491psla2TW2CiXJckJVXG/view?usp=sharing

su
getprop ro.vendor.vasott.version
v534r07_nugu-20220622

(ALTech) Sangmin Choi

2022-06-22 10:33

developer   ~0010226

Hi, Jason,

Thank you for all support.

(ALTech) Sangmin Choi

2022-06-30 10:13

developer   ~0010269

Could you please build a test image? (SD only)
Please apply this patch(0001-hls-1.5-2.patch).

(ALTech) Sangmin Choi

2022-06-30 10:17

developer   ~0010270

You don't need to apply NUGU apk.
I want to keep this ticket to manage a test firmware.
0001-hls-1.5-2.patch (5,158 bytes)   
From a9d0aa010ff6a10daf422347baa7bc7f72b64f6b Mon Sep 17 00:00:00 2001
From: Tony Kim <Tony.Kim@synaptics.com>
Date: Sat, 25 Jun 2022 04:16:04 +0900
Subject: [PATCH] hls 1.5 (2)

---
 amp/src/ddl/comp_clk/source/clk_avsync.c | 65 ++++++++++++++++++++++++++++----
 1 file changed, 57 insertions(+), 8 deletions(-)

diff --git a/amp/src/ddl/comp_clk/source/clk_avsync.c b/amp/src/ddl/comp_clk/source/clk_avsync.c
index a02f294..b8430ca 100755
--- a/amp/src/ddl/comp_clk/source/clk_avsync.c
+++ b/amp/src/ddl/comp_clk/source/clk_avsync.c
@@ -4289,6 +4289,8 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
     BOOL   fAllStreamsReady = TRUE;
     SYNC_STREAM *pStream;
     BOOL   fAudioReady = FALSE;
+    BOOL   fVideoReady = FALSE;
+    UINT32 uiVideoStrms = 0;
 
     CLK_ASSERT(pSyncMgr);
 
@@ -4317,6 +4319,9 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
             pStream->m_fReady = fReady;
         }
 
+        if(pStream->m_eType == STREAM_TYPE_VIDEO)
+            uiVideoStrms++;
+
         if (pStream->m_eType == STREAM_TYPE_AUDIO && fReady) {
             if (!fAudioReady) {
                 fAudioReady = TRUE;
@@ -4325,6 +4330,11 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
                 AVSH("[AVS]Set start STC: 0x%llx", pSyncMgr->m_uiStartSTC);
             }
         }
+        else if (pStream->m_eType == STREAM_TYPE_VIDEO && fReady) {
+            AVSH("[AVS]Video Stream Ready");
+            if(!fVideoReady)
+                fVideoReady = TRUE;
+        }
         if (fReady) {
             fHasReadyStream = TRUE;
         } else if (!fReady) {
@@ -4349,11 +4359,23 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
         }
     }
 
-    if(fAudioReady) {
-        if (!pSyncMgr->m_fAllStreamsReady) {
-            AVSH("[AVS]Ready to kick off");
+    if(uiVideoStrms > 0) // Video(and Audio) are there (general case)
+    {
+        if(fAudioReady && fVideoReady) {
+            if (!pSyncMgr->m_fAllStreamsReady) {
+                AVSH("[AVS]Ready to kick off");
+            }
+            pSyncMgr->m_fAllStreamsReady = TRUE;
+        }
+    } 
+    else // Audio only case.
+    {
+        if(fAudioReady) {
+            if (!pSyncMgr->m_fAllStreamsReady) {
+                AVSH("[AVS]Ready to kick off");
+            }
+            pSyncMgr->m_fAllStreamsReady = TRUE;
         }
-        pSyncMgr->m_fAllStreamsReady = fAudioReady;
     }
 
     return;
@@ -4391,6 +4413,9 @@ VOID sideband_check_avsync(AVSYNC_MGR *pSyncMgr)
 }
 
 
+//#include <cutils/properties.h>
+//char hlstrickspeed[PROPERTY_VALUE_MAX] ={0,};
+
 HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
                      SYNC_STREAM *pStream, AMP_BD_HANDLE hBD,
                      AMP_CLK_RND_INFO *pRndInfo,
@@ -4410,6 +4435,7 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
     CLK_ASSERT(pDropInfo);
     CLK_ASSERT(pSyncMgr->m_pAVClock);
 
+//    property_get("sys.skb.hls.trickspeed", hlstrickspeed, "1.0");
     eAct = AMP_CLK_DISP;
     pBDInfo = stream_resync_to_bd(pStream, hBD);
 
@@ -4427,7 +4453,8 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
         goto _Exit;
     }
 
-    if (pSyncMgr->m_eSyncStatus == SYNC_INIT) {
+    if (pSyncMgr->m_eSyncStatus == SYNC_INIT ||
+        (pSyncMgr->m_eSyncStatus == SYNC_LOCKING)) {
         eAct = AMP_CLK_HOLD;
         AVSH("[AVS]HOLD THE FRAME BEFORE START\n", __FUNCTION__);
         goto _Exit;
@@ -4449,6 +4476,7 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
 
     uiTime = AMP_GetCurrentTimeMS();
     uiOrigSTC = GET_PTS_VAL64(avclock_get_stc64(pSyncMgr->m_pAVClock, TRUE));
+
     uiSTC = uiOrigSTC + uiDelay;
     if ((INT64)uiSTC >= pStream->m_iUsrDelay) {
         uiSTC -= pStream->m_iUsrDelay;
@@ -4504,13 +4532,34 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
         }
     }
 
+//    if(strncmp(hlstrickspeed, "1.5", 3)==0) 
+    {
+       
+        if (!pStream->m_uiPdnMode && pStream->m_fFirstSmpDisped &&
+                pSyncMgr->m_uiStcCnt4 == 6006 && pBDInfo->m_uiDurationCnt4 % 4 == 0) {
+            eAct = check_pts_range(pBDInfo->m_uiPtsStart, uiSTC, uiRangeL, uiRangeR,
+                    pSyncMgr->m_fBackward);
+            if (eAct != AMP_CLK_DISP) {
+                uiRangeL = uiRangeR = pSyncMgr->m_uiStcCnt4 >> 2;
+                AVSI("[AVS] enlarge range to %d for action[%c] during consume redundancy\n",
+                        uiRangeL, pszActChar[eAct]);
+            }
+        }
+    }
+
     eAct = check_pts_range(pBDInfo->m_uiPtsStart, uiSTC, uiRangeL, uiRangeR,
                             pSyncMgr->m_fBackward);
 
-    if ((eAct != AMP_CLK_DISP) && (pSyncMgr->m_iSyncAdjCnt == 1)) {
-        eAct = AMP_CLK_DISP;
-        pSyncMgr->m_iSyncAdjCnt = 0;
+#if 0
+    if(strncmp(hlstrickspeed, "1.5", 3))
+    {
+        if ((eAct != AMP_CLK_DISP) && (pSyncMgr->m_iSyncAdjCnt == 1)) {
+            eAct = AMP_CLK_DISP;
+            pSyncMgr->m_iSyncAdjCnt = 0;
+        }
     }
+#endif
+
 _Exit:
     AVSU1("[AVS][%d]CHECK_%s([%c][%c] V:0x%08x(%d), M:0x%08x(%d)[%d], "
           "AM:0x%08x, AM-V:%d)%s, usrdelay %d ms\n",
-- 
2.7.4

0001-hls-1.5-2.patch (5,158 bytes)   

(SW) Jason Ling

2022-06-30 13:50

developer   ~0010271

Hi Sangmin,

https://drive.google.com/file/d/1ZjPFrsLeuUgl4D36b0zdSKKXYg1_8w3P/view?usp=sharing

su
getprop ro.vendor.vasott.version
v534r09hls-20220630

(ALTech) Sangmin Choi

2022-06-30 14:45

developer   ~0010273

Hi, Jason,

Could you please build a test image one more? (SD only)
Please clean all repository and apply below commit.
https://bitbucket.skbroadband.com/projects/STBPAC/repos/skb_hlsplayer/commits/07a5a14582bdccea99a74bbe5b7b88b3f70f5b9f
vendor/skb/prebuilts/skb_hlsplayer

Thank you.

(ALTech) Sangmin Choi

2022-06-30 15:01

developer   ~0010274

There is a daily build image which I need.
Please ignore my last request.
Sorry for inconvenience.

(SW) Jason Ling

2022-06-30 15:02

developer   ~0010275

Hi Sanmin,

The hlsPlayer (0.6.32) was committed yesterday. I think you can try the daily build first.

(ALTech) Sangmin Choi

2022-06-30 15:39

developer   ~0010276

Hi, Jason,

Ok, I will check daily build first.

And, I need one more test image for hls test.
I missed one patch toady morning.
Please apply attached patches and build a test image.(SD only)

I have only SD STBs which is registered as HLS.
So, please understand I should ask the test image.
0001-frameworks-av-increase_audio_input_buffer.patch (525 bytes)   
diff --git a/media/codec2/sfplugin/CCodecBufferChannel.cpp b/media/codec2/sfplugin/CCodecBufferChannel.cpp
index 830829251..650317217 100644
--- a/media/codec2/sfplugin/CCodecBufferChannel.cpp
+++ b/media/codec2/sfplugin/CCodecBufferChannel.cpp
@@ -58,7 +58,7 @@ using CasStatus = hardware::cas::V1_0::Status;
 
 namespace {
 
-constexpr size_t kSmoothnessFactor = 4;
+constexpr size_t kSmoothnessFactor = 20;
 constexpr size_t kRenderingDepth = 3;
 
 // This is for keeping IGBP's buffer dropping logic in legacy mode other
0001-hls-1.5-2-2.patch (5,158 bytes)   
From a9d0aa010ff6a10daf422347baa7bc7f72b64f6b Mon Sep 17 00:00:00 2001
From: Tony Kim <Tony.Kim@synaptics.com>
Date: Sat, 25 Jun 2022 04:16:04 +0900
Subject: [PATCH] hls 1.5 (2)

---
 amp/src/ddl/comp_clk/source/clk_avsync.c | 65 ++++++++++++++++++++++++++++----
 1 file changed, 57 insertions(+), 8 deletions(-)

diff --git a/amp/src/ddl/comp_clk/source/clk_avsync.c b/amp/src/ddl/comp_clk/source/clk_avsync.c
index a02f294..b8430ca 100755
--- a/amp/src/ddl/comp_clk/source/clk_avsync.c
+++ b/amp/src/ddl/comp_clk/source/clk_avsync.c
@@ -4289,6 +4289,8 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
     BOOL   fAllStreamsReady = TRUE;
     SYNC_STREAM *pStream;
     BOOL   fAudioReady = FALSE;
+    BOOL   fVideoReady = FALSE;
+    UINT32 uiVideoStrms = 0;
 
     CLK_ASSERT(pSyncMgr);
 
@@ -4317,6 +4319,9 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
             pStream->m_fReady = fReady;
         }
 
+        if(pStream->m_eType == STREAM_TYPE_VIDEO)
+            uiVideoStrms++;
+
         if (pStream->m_eType == STREAM_TYPE_AUDIO && fReady) {
             if (!fAudioReady) {
                 fAudioReady = TRUE;
@@ -4325,6 +4330,11 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
                 AVSH("[AVS]Set start STC: 0x%llx", pSyncMgr->m_uiStartSTC);
             }
         }
+        else if (pStream->m_eType == STREAM_TYPE_VIDEO && fReady) {
+            AVSH("[AVS]Video Stream Ready");
+            if(!fVideoReady)
+                fVideoReady = TRUE;
+        }
         if (fReady) {
             fHasReadyStream = TRUE;
         } else if (!fReady) {
@@ -4349,11 +4359,23 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
         }
     }
 
-    if(fAudioReady) {
-        if (!pSyncMgr->m_fAllStreamsReady) {
-            AVSH("[AVS]Ready to kick off");
+    if(uiVideoStrms > 0) // Video(and Audio) are there (general case)
+    {
+        if(fAudioReady && fVideoReady) {
+            if (!pSyncMgr->m_fAllStreamsReady) {
+                AVSH("[AVS]Ready to kick off");
+            }
+            pSyncMgr->m_fAllStreamsReady = TRUE;
+        }
+    } 
+    else // Audio only case.
+    {
+        if(fAudioReady) {
+            if (!pSyncMgr->m_fAllStreamsReady) {
+                AVSH("[AVS]Ready to kick off");
+            }
+            pSyncMgr->m_fAllStreamsReady = TRUE;
         }
-        pSyncMgr->m_fAllStreamsReady = fAudioReady;
     }
 
     return;
@@ -4391,6 +4413,9 @@ VOID sideband_check_avsync(AVSYNC_MGR *pSyncMgr)
 }
 
 
+//#include <cutils/properties.h>
+//char hlstrickspeed[PROPERTY_VALUE_MAX] ={0,};
+
 HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
                      SYNC_STREAM *pStream, AMP_BD_HANDLE hBD,
                      AMP_CLK_RND_INFO *pRndInfo,
@@ -4410,6 +4435,7 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
     CLK_ASSERT(pDropInfo);
     CLK_ASSERT(pSyncMgr->m_pAVClock);
 
+//    property_get("sys.skb.hls.trickspeed", hlstrickspeed, "1.0");
     eAct = AMP_CLK_DISP;
     pBDInfo = stream_resync_to_bd(pStream, hBD);
 
@@ -4427,7 +4453,8 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
         goto _Exit;
     }
 
-    if (pSyncMgr->m_eSyncStatus == SYNC_INIT) {
+    if (pSyncMgr->m_eSyncStatus == SYNC_INIT ||
+        (pSyncMgr->m_eSyncStatus == SYNC_LOCKING)) {
         eAct = AMP_CLK_HOLD;
         AVSH("[AVS]HOLD THE FRAME BEFORE START\n", __FUNCTION__);
         goto _Exit;
@@ -4449,6 +4476,7 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
 
     uiTime = AMP_GetCurrentTimeMS();
     uiOrigSTC = GET_PTS_VAL64(avclock_get_stc64(pSyncMgr->m_pAVClock, TRUE));
+
     uiSTC = uiOrigSTC + uiDelay;
     if ((INT64)uiSTC >= pStream->m_iUsrDelay) {
         uiSTC -= pStream->m_iUsrDelay;
@@ -4504,13 +4532,34 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
         }
     }
 
+//    if(strncmp(hlstrickspeed, "1.5", 3)==0) 
+    {
+       
+        if (!pStream->m_uiPdnMode && pStream->m_fFirstSmpDisped &&
+                pSyncMgr->m_uiStcCnt4 == 6006 && pBDInfo->m_uiDurationCnt4 % 4 == 0) {
+            eAct = check_pts_range(pBDInfo->m_uiPtsStart, uiSTC, uiRangeL, uiRangeR,
+                    pSyncMgr->m_fBackward);
+            if (eAct != AMP_CLK_DISP) {
+                uiRangeL = uiRangeR = pSyncMgr->m_uiStcCnt4 >> 2;
+                AVSI("[AVS] enlarge range to %d for action[%c] during consume redundancy\n",
+                        uiRangeL, pszActChar[eAct]);
+            }
+        }
+    }
+
     eAct = check_pts_range(pBDInfo->m_uiPtsStart, uiSTC, uiRangeL, uiRangeR,
                             pSyncMgr->m_fBackward);
 
-    if ((eAct != AMP_CLK_DISP) && (pSyncMgr->m_iSyncAdjCnt == 1)) {
-        eAct = AMP_CLK_DISP;
-        pSyncMgr->m_iSyncAdjCnt = 0;
+#if 0
+    if(strncmp(hlstrickspeed, "1.5", 3))
+    {
+        if ((eAct != AMP_CLK_DISP) && (pSyncMgr->m_iSyncAdjCnt == 1)) {
+            eAct = AMP_CLK_DISP;
+            pSyncMgr->m_iSyncAdjCnt = 0;
+        }
     }
+#endif
+
 _Exit:
     AVSU1("[AVS][%d]CHECK_%s([%c][%c] V:0x%08x(%d), M:0x%08x(%d)[%d], "
           "AM:0x%08x, AM-V:%d)%s, usrdelay %d ms\n",
-- 
2.7.4

0001-hls-1.5-2-2.patch (5,158 bytes)   

(ALTech) Sangmin Choi

2022-06-30 16:16

developer   ~0010277

Last edited: 2022-06-30 17:15

Hi, Jason,

Please ignore 0010276 comment.

Please build a test image attached 3 patches.

I want to appreciate your help.

Thank you.

1124994_0001-SKB-MMCEI-9909-AHAL-PTS-delivery-for-DD-pass-throu.patch (973 bytes)   
From 2385568e05a8c37ab0b428ff6d30c27fcd614586 Mon Sep 17 00:00:00 2001
From: Tony Kim <Tony.Kim@synaptics.com>
Date: Wed, 8 Jun 2022 21:26:42 +0900
Subject: [PATCH] [SKB][MMCEI-9909] AHAL PTS delivery for DD pass-throu

Change-Id: I9b6c9ff503c57ecad89d8fdc47a134e5b7489515
---
 audio/AudioStreamTunnelOut.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/audio/AudioStreamTunnelOut.cpp b/audio/AudioStreamTunnelOut.cpp
index 6e3fb69..4117f47 100755
--- a/audio/AudioStreamTunnelOut.cpp
+++ b/audio/AudioStreamTunnelOut.cpp
@@ -1085,7 +1085,7 @@ void AudioStreamTunnelOut::parsePts(void **pData, int *datalength)
     char* tmpPTShead = NULL;
     index = mRemainDataLen;
 
-    if (NULL == data || NULL == mPCMJoinData) {
+    if (NULL == data || (!mIsPassThru && NULL == mPCMJoinData)) {
         MVLOGE("%s() line %d, Invalid data!!!, datalength %d.", __FUNCTION__, __LINE__, *datalength);
         return;
     }
-- 
2.7.4
0001-frameworks-av-increase_audio_input_buffer-2.patch (525 bytes)   
diff --git a/media/codec2/sfplugin/CCodecBufferChannel.cpp b/media/codec2/sfplugin/CCodecBufferChannel.cpp
index 830829251..650317217 100644
--- a/media/codec2/sfplugin/CCodecBufferChannel.cpp
+++ b/media/codec2/sfplugin/CCodecBufferChannel.cpp
@@ -58,7 +58,7 @@ using CasStatus = hardware::cas::V1_0::Status;
 
 namespace {
 
-constexpr size_t kSmoothnessFactor = 4;
+constexpr size_t kSmoothnessFactor = 20;
 constexpr size_t kRenderingDepth = 3;
 
 // This is for keeping IGBP's buffer dropping logic in legacy mode other
0001-hls-1.5-2-3.patch (5,158 bytes)   
From a9d0aa010ff6a10daf422347baa7bc7f72b64f6b Mon Sep 17 00:00:00 2001
From: Tony Kim <Tony.Kim@synaptics.com>
Date: Sat, 25 Jun 2022 04:16:04 +0900
Subject: [PATCH] hls 1.5 (2)

---
 amp/src/ddl/comp_clk/source/clk_avsync.c | 65 ++++++++++++++++++++++++++++----
 1 file changed, 57 insertions(+), 8 deletions(-)

diff --git a/amp/src/ddl/comp_clk/source/clk_avsync.c b/amp/src/ddl/comp_clk/source/clk_avsync.c
index a02f294..b8430ca 100755
--- a/amp/src/ddl/comp_clk/source/clk_avsync.c
+++ b/amp/src/ddl/comp_clk/source/clk_avsync.c
@@ -4289,6 +4289,8 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
     BOOL   fAllStreamsReady = TRUE;
     SYNC_STREAM *pStream;
     BOOL   fAudioReady = FALSE;
+    BOOL   fVideoReady = FALSE;
+    UINT32 uiVideoStrms = 0;
 
     CLK_ASSERT(pSyncMgr);
 
@@ -4317,6 +4319,9 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
             pStream->m_fReady = fReady;
         }
 
+        if(pStream->m_eType == STREAM_TYPE_VIDEO)
+            uiVideoStrms++;
+
         if (pStream->m_eType == STREAM_TYPE_AUDIO && fReady) {
             if (!fAudioReady) {
                 fAudioReady = TRUE;
@@ -4325,6 +4330,11 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
                 AVSH("[AVS]Set start STC: 0x%llx", pSyncMgr->m_uiStartSTC);
             }
         }
+        else if (pStream->m_eType == STREAM_TYPE_VIDEO && fReady) {
+            AVSH("[AVS]Video Stream Ready");
+            if(!fVideoReady)
+                fVideoReady = TRUE;
+        }
         if (fReady) {
             fHasReadyStream = TRUE;
         } else if (!fReady) {
@@ -4349,11 +4359,23 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
         }
     }
 
-    if(fAudioReady) {
-        if (!pSyncMgr->m_fAllStreamsReady) {
-            AVSH("[AVS]Ready to kick off");
+    if(uiVideoStrms > 0) // Video(and Audio) are there (general case)
+    {
+        if(fAudioReady && fVideoReady) {
+            if (!pSyncMgr->m_fAllStreamsReady) {
+                AVSH("[AVS]Ready to kick off");
+            }
+            pSyncMgr->m_fAllStreamsReady = TRUE;
+        }
+    } 
+    else // Audio only case.
+    {
+        if(fAudioReady) {
+            if (!pSyncMgr->m_fAllStreamsReady) {
+                AVSH("[AVS]Ready to kick off");
+            }
+            pSyncMgr->m_fAllStreamsReady = TRUE;
         }
-        pSyncMgr->m_fAllStreamsReady = fAudioReady;
     }
 
     return;
@@ -4391,6 +4413,9 @@ VOID sideband_check_avsync(AVSYNC_MGR *pSyncMgr)
 }
 
 
+//#include <cutils/properties.h>
+//char hlstrickspeed[PROPERTY_VALUE_MAX] ={0,};
+
 HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
                      SYNC_STREAM *pStream, AMP_BD_HANDLE hBD,
                      AMP_CLK_RND_INFO *pRndInfo,
@@ -4410,6 +4435,7 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
     CLK_ASSERT(pDropInfo);
     CLK_ASSERT(pSyncMgr->m_pAVClock);
 
+//    property_get("sys.skb.hls.trickspeed", hlstrickspeed, "1.0");
     eAct = AMP_CLK_DISP;
     pBDInfo = stream_resync_to_bd(pStream, hBD);
 
@@ -4427,7 +4453,8 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
         goto _Exit;
     }
 
-    if (pSyncMgr->m_eSyncStatus == SYNC_INIT) {
+    if (pSyncMgr->m_eSyncStatus == SYNC_INIT ||
+        (pSyncMgr->m_eSyncStatus == SYNC_LOCKING)) {
         eAct = AMP_CLK_HOLD;
         AVSH("[AVS]HOLD THE FRAME BEFORE START\n", __FUNCTION__);
         goto _Exit;
@@ -4449,6 +4476,7 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
 
     uiTime = AMP_GetCurrentTimeMS();
     uiOrigSTC = GET_PTS_VAL64(avclock_get_stc64(pSyncMgr->m_pAVClock, TRUE));
+
     uiSTC = uiOrigSTC + uiDelay;
     if ((INT64)uiSTC >= pStream->m_iUsrDelay) {
         uiSTC -= pStream->m_iUsrDelay;
@@ -4504,13 +4532,34 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
         }
     }
 
+//    if(strncmp(hlstrickspeed, "1.5", 3)==0) 
+    {
+       
+        if (!pStream->m_uiPdnMode && pStream->m_fFirstSmpDisped &&
+                pSyncMgr->m_uiStcCnt4 == 6006 && pBDInfo->m_uiDurationCnt4 % 4 == 0) {
+            eAct = check_pts_range(pBDInfo->m_uiPtsStart, uiSTC, uiRangeL, uiRangeR,
+                    pSyncMgr->m_fBackward);
+            if (eAct != AMP_CLK_DISP) {
+                uiRangeL = uiRangeR = pSyncMgr->m_uiStcCnt4 >> 2;
+                AVSI("[AVS] enlarge range to %d for action[%c] during consume redundancy\n",
+                        uiRangeL, pszActChar[eAct]);
+            }
+        }
+    }
+
     eAct = check_pts_range(pBDInfo->m_uiPtsStart, uiSTC, uiRangeL, uiRangeR,
                             pSyncMgr->m_fBackward);
 
-    if ((eAct != AMP_CLK_DISP) && (pSyncMgr->m_iSyncAdjCnt == 1)) {
-        eAct = AMP_CLK_DISP;
-        pSyncMgr->m_iSyncAdjCnt = 0;
+#if 0
+    if(strncmp(hlstrickspeed, "1.5", 3))
+    {
+        if ((eAct != AMP_CLK_DISP) && (pSyncMgr->m_iSyncAdjCnt == 1)) {
+            eAct = AMP_CLK_DISP;
+            pSyncMgr->m_iSyncAdjCnt = 0;
+        }
     }
+#endif
+
 _Exit:
     AVSU1("[AVS][%d]CHECK_%s([%c][%c] V:0x%08x(%d), M:0x%08x(%d)[%d], "
           "AM:0x%08x, AM-V:%d)%s, usrdelay %d ms\n",
-- 
2.7.4

0001-hls-1.5-2-3.patch (5,158 bytes)   

(SW) Jason Ling

2022-06-30 18:49

developer   ~0010282

Hi Sangmin,

Please check your ftp
/release_by_fxn/tmp/usb_bfx-ua300_V19.534.9_SD_hls2.zip

su
getprop ro.vendor.vasott.version
v534r09hls2-20220630

Thanks
Jason

(ALTech) Sangmin Choi

2022-07-12 10:27

developer   ~0010348

Last edited: 2022-07-12 12:08

Hi, Jason,

Could you please build a test image after apply following commits?
You can find following commits in Smart3 UI 5.3.4 branch.

1.
=======================================================================
pwd
/home/smchoi/project/BFX-AT100/frameworks/av

git log -1
commit 0f6f09901452a0e876def6ea32f16d7f87bc3b2c (HEAD -> develop, skb/BFX-AT100_5.3.4, m/BFX-AT100_5.3.4)
Author: kerwin <kerwin.chen@fii-foxconn.com>
Date: Tue Jul 12 08:40:31 2022 +0800

    [BTVV-4467]: Add debug messages in MediaDrm server

    Change-Id: I6c6c4708eefa5ce17303e9cebfb174f760dcc2ec

2.
=======================================================================
pwd
/home/smchoi/project/BFX-AT100/vendor/widevine

git log -1
commit 55462c8939fc00c413ccf5471891591ba7aa1633 (HEAD -> develop, skb/BFX-AT100_5.3.4, m/BFX-AT100_5.3.4)
Author: kerwin <kerwin.chen@fii-foxconn.com>
Date: Tue Jul 12 08:46:56 2022 +0800

    [BTVV-4467]: Add debug messages in MediaDrm plugin

    Change-Id: I0889fc8b1f74e156d58bb749970251d96ab3ba37

Thank you.

(SW) Jason Ling

2022-07-12 15:29

developer   ~0010350

Hi Sangmin,

Please check your ftp
/release_by_fxn/tmp/usb_bfx-ua300_V19.534.11_SD_drm.zip

su
getprop ro.vendor.vasott.version
v534r11drm-20220712

Thanks
Jason

(ALTech) Sangmin Choi

2022-07-29 17:01

developer   ~0010488

Hi, Jason,

Could you please build a test image after apply attached patch? (SD Only)

Thank you.
0001-MMCEI-9962-AI2-47-AppleTV-FF-3X-and-1X-resume-issue-.patch (4,372 bytes)   
From fef257e3b67ff6add7ffd30bb0e78680b6800184 Mon Sep 17 00:00:00 2001
From: Tony Kim <Tony.Kim@synaptics.com>
Date: Thu, 29 Jul 2022 06:07:24 +0900
Subject: [PATCH] [MMCEI-9962][AI2-47] AppleTV FF 3X and 1X resume issue -
 timeout on resolution.

Change-Id: Id25be602d14eeca2231111f00bd313427bf84300
---
 media/libstagefright/ACodec.cpp | 19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)

diff --git a/media/libstagefright/ACodec.cpp b/media/libstagefright/ACodec.cpp
index 3ee7b3f..c3457e8 100644
--- a/media/libstagefright/ACodec.cpp
+++ b/media/libstagefright/ACodec.cpp
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-//#define LOG_NDEBUG 0
+#define LOG_NDEBUG 0
 #define LOG_TAG "ACodec"
 
 #ifdef __LP64__
@@ -1121,6 +1121,8 @@ status_t ACodec::configureOutputBuffersFromNativeWindow(
         OMX_U32 *bufferCount, OMX_U32 *bufferSize,
         OMX_U32 *minUndequeuedBuffers, bool preregister) {
 
+    ALOGD("[%s] configureOutputBuffersFromNativeWindow Enter\n", mComponentName.c_str());
+
     OMX_PARAM_PORTDEFINITIONTYPE def;
     InitOMXParams(&def);
     def.nPortIndex = kPortIndexOutput;
@@ -1160,6 +1162,7 @@ status_t ACodec::configureOutputBuffersFromNativeWindow(
             mNativeWindow.get(), NATIVE_WINDOW_MIN_UNDEQUEUED_BUFFERS,
             (int *)minUndequeuedBuffers);
 
+    ALOGD("[%s] minUndequeuedBuffers:%u\n", mComponentName.c_str(), *minUndequeuedBuffers);
     if (err != 0) {
         ALOGE("NATIVE_WINDOW_MIN_UNDEQUEUED_BUFFERS query failed: %s (%d)",
                 strerror(-err), -err);
@@ -1209,6 +1212,7 @@ status_t ACodec::configureOutputBuffersFromNativeWindow(
 
     *bufferCount = def.nBufferCountActual;
     *bufferSize =  def.nBufferSize;
+    ALOGD("[%s] configureOutputBuffersFromNativeWindow leave, bufferCount:%u, bufferSize:%u\n", mComponentName.c_str(), *bufferCount, *bufferSize);
     return err;
 }
 
@@ -1235,7 +1239,9 @@ status_t ACodec::allocateOutputBuffersFromNativeWindow() {
     for (OMX_U32 i = 0; i < bufferCount; i++) {
         ANativeWindowBuffer *buf;
         int fenceFd;
+        ALOGV("[%s] [%d] dequeueBuffer begin", mComponentName.c_str(), i);
         err = mNativeWindow->dequeueBuffer(mNativeWindow.get(), &buf, &fenceFd);
+        ALOGV("[%s] [%d] dequeueBuffer end", mComponentName.c_str(), i);
         if (err != 0) {
             ALOGE("dequeueBuffer failed: %s (%d)", strerror(-err), -err);
             break;
@@ -8074,7 +8080,9 @@ bool ACodec::ExecutingState::onOMXEvent(
                             OMX_CommandPortDisable, kPortIndexOutput),
                          (status_t)OK);
 
+                ALOGD("[%s] free ANW buffer begin\n", mCodec->mComponentName.c_str());
                 mCodec->freeOutputBuffersNotOwnedByComponent();
+                ALOGD("[%s] free ANW buffer end\n", mCodec->mComponentName.c_str());
 
                 mCodec->changeState(mCodec->mOutputPortSettingsChangedState);
             } else if (data2 != OMX_IndexConfigCommonOutputCrop
@@ -8183,10 +8191,13 @@ void ACodec::OutputPortSettingsChangedState::stateEntered() {
     ALOGV("[%s] Now handling output port settings change",
          mCodec->mComponentName.c_str());
 
-    // If we haven't transitioned after 3 seconds, we're probably stuck.
+    // If we haven't transitioned after 10 seconds, we're probably stuck.
     sp<AMessage> msg = new AMessage(ACodec::kWhatCheckIfStuck, mCodec);
     msg->setInt32("generation", mCodec->mStateGeneration);
-    msg->post(3000000);
+//    msg->post(10000000);
+//    msg->post(7000000);
+//    msg->post(3000000);
+    msg->post(20000000);
 }
 
 bool ACodec::OutputPortSettingsChangedState::onOMXFrameRendered(
@@ -8227,7 +8238,9 @@ bool ACodec::OutputPortSettingsChangedState::onOMXEvent(
                 mCodec->mRenderTracker.clear(systemTime(CLOCK_MONOTONIC));
 
                 if (err == OK) {
+                    ALOGD("[%s] allocateBuffersOnPort begin\n", mCodec->mComponentName.c_str());
                     err = mCodec->allocateBuffersOnPort(kPortIndexOutput);
+                    ALOGD("[%s] allocateBuffersOnPort end\n", mCodec->mComponentName.c_str());
                     ALOGE_IF(err != OK, "Failed to allocate output port buffers after port "
                             "reconfiguration: (%d)", err);
                     mCodec->mCallback->onOutputBuffersChanged();
-- 
2.7.4

(SW) Jason Ling

2022-07-29 21:24

developer   ~0010490

Hi Sangmin,

Please check the following link,

https://drive.google.com/file/d/17Zob-N-VHBg-k0vcp6l373z12x_hYbIl/view?usp=sharing

su
getprop ro.vendor.vasott.version
v534r19apple-20220729

(ALTech) Sangmin Choi

2022-08-04 13:57

developer   ~0010525

Last edited: 2022-08-04 13:58

Hi, Jason,

Could you please build a test image enable the Google Standard Launcher? (SD and ND)
We have old image but need latest version.

Thank you.

(SW) Jason Ling

2022-08-04 16:28

developer   ~0010528

Hi Sangmin,

Please check the following folder
/release_by_fxn/tmp/atv_launcher

BFX-UA300:/ $ su
BFX-UA300:/ # getprop ro.vendor.vasott.version
v534r23launcher-20220804

Thanks,
Jason

(ALTech) Sangmin Choi

2022-08-25 09:29

developer   ~0010708

Hi, Jason,

Could you please build a test image attached 3 patches? (SD and ND)

Thank you.
patch_ai2_41.tgz (7,148 bytes)
20220825_0001-hls-1.5-patch-1-1.patch (5,337 bytes)   
From e60b3faf21f8c460c5f04e4a96b799a9a6ed0640 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=5B=EC=8B=9C=EB=83=85=ED=8B=B1=EC=8A=A4=5D=20=EB=B0=95?=
 =?UTF-8?q?=EC=9E=AC=EB=AF=BC?= <kail.park@synaptics.com>
Date: Wed, 13 Jul 2022 21:40:22 +0900
Subject: [PATCH] hls 1.5 patch 1-1

Change-Id: Id6399c701d67994bd10bc180a3cd10301f0825b5
---
 amp/src/ddl/comp_clk/source/clk_avsync.c | 66 ++++++++++++++++++++++++++++----
 1 file changed, 58 insertions(+), 8 deletions(-)

diff --git a/amp/src/ddl/comp_clk/source/clk_avsync.c b/amp/src/ddl/comp_clk/source/clk_avsync.c
index 85cc75e..e14205b 100755
--- a/amp/src/ddl/comp_clk/source/clk_avsync.c
+++ b/amp/src/ddl/comp_clk/source/clk_avsync.c
@@ -4230,6 +4230,8 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
     BOOL   fAllStreamsReady = TRUE;
     SYNC_STREAM *pStream;
     BOOL   fAudioReady = FALSE;
+    BOOL   fVideoReady = FALSE;
+    UINT32 uiVideoStrms = 0;
 
     CLK_ASSERT(pSyncMgr);
 
@@ -4258,6 +4260,9 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
             pStream->m_fReady = fReady;
         }
 
+        if(pStream->m_eType == STREAM_TYPE_VIDEO)
+            uiVideoStrms++;
+
         if (pStream->m_eType == STREAM_TYPE_AUDIO && fReady) {
             if (!fAudioReady) {
                 fAudioReady = TRUE;
@@ -4266,6 +4271,11 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
                 AVSH("[AVS]Set start STC: 0x%llx", pSyncMgr->m_uiStartSTC);
             }
         }
+        else if (pStream->m_eType == STREAM_TYPE_VIDEO && fReady) {
+            AVSH("[AVS]Video Stream Ready");
+            if(!fVideoReady)
+                fVideoReady = TRUE;
+        }
         if (fReady) {
             fHasReadyStream = TRUE;
         } else if (!fReady) {
@@ -4290,11 +4300,24 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
         }
     }
 
-    if(fAudioReady) {
-        if (!pSyncMgr->m_fAllStreamsReady) {
-            AVSH("[AVS]Ready to kick off");
+    if(uiVideoStrms > 0) // Video(and Audio) are there (general case)
+    {
+        //if(fAudioReady && fVideoReady) {
+        if(fAudioReady) {
+            if (!pSyncMgr->m_fAllStreamsReady) {
+                AVSH("[AVS]Ready to kick off");
+            }
+            pSyncMgr->m_fAllStreamsReady = TRUE;
+        }
+    } 
+    else // Audio only case.
+    {
+        if(fAudioReady) {
+            if (!pSyncMgr->m_fAllStreamsReady) {
+                AVSH("[AVS]Ready to kick off");
+            }
+            pSyncMgr->m_fAllStreamsReady = TRUE;
         }
-        pSyncMgr->m_fAllStreamsReady = fAudioReady;
     }
 
     return;
@@ -4332,6 +4355,9 @@ VOID sideband_check_avsync(AVSYNC_MGR *pSyncMgr)
 }
 
 
+//#include <cutils/properties.h>
+//char hlstrickspeed[PROPERTY_VALUE_MAX] ={0,};
+
 HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
                      SYNC_STREAM *pStream, AMP_BD_HANDLE hBD,
                      AMP_CLK_RND_INFO *pRndInfo,
@@ -4351,6 +4377,7 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
     CLK_ASSERT(pDropInfo);
     CLK_ASSERT(pSyncMgr->m_pAVClock);
 
+//    property_get("sys.skb.hls.trickspeed", hlstrickspeed, "1.0");
     eAct = AMP_CLK_DISP;
     pBDInfo = stream_resync_to_bd(pStream, hBD);
 
@@ -4368,7 +4395,8 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
         goto _Exit;
     }
 
-    if (pSyncMgr->m_eSyncStatus == SYNC_INIT) {
+    if (pSyncMgr->m_eSyncStatus == SYNC_INIT ||
+        (pSyncMgr->m_eSyncStatus == SYNC_LOCKING)) {
         eAct = AMP_CLK_HOLD;
         AVSH("[AVS]HOLD THE FRAME BEFORE START\n", __FUNCTION__);
         goto _Exit;
@@ -4390,6 +4418,7 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
 
     uiTime = AMP_GetCurrentTimeMS();
     uiOrigSTC = GET_PTS_VAL64(avclock_get_stc64(pSyncMgr->m_pAVClock, TRUE));
+
     uiSTC = uiOrigSTC + uiDelay;
     if ((INT64)uiSTC >= pStream->m_iUsrDelay) {
         uiSTC -= pStream->m_iUsrDelay;
@@ -4445,13 +4474,34 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
         }
     }
 
+//    if(strncmp(hlstrickspeed, "1.5", 3)==0) 
+    {
+       
+        if (!pStream->m_uiPdnMode && pStream->m_fFirstSmpDisped &&
+                pSyncMgr->m_uiStcCnt4 == 6006 && pBDInfo->m_uiDurationCnt4 % 4 == 0) {
+            eAct = check_pts_range(pBDInfo->m_uiPtsStart, uiSTC, uiRangeL, uiRangeR,
+                    pSyncMgr->m_fBackward);
+            if (eAct != AMP_CLK_DISP) {
+                uiRangeL = uiRangeR = pSyncMgr->m_uiStcCnt4 >> 2;
+                AVSI("[AVS] enlarge range to %d for action[%c] during consume redundancy\n",
+                        uiRangeL, pszActChar[eAct]);
+            }
+        }
+    }
+
     eAct = check_pts_range(pBDInfo->m_uiPtsStart, uiSTC, uiRangeL, uiRangeR,
                             pSyncMgr->m_fBackward);
 
-    if ((eAct != AMP_CLK_DISP) && (pSyncMgr->m_iSyncAdjCnt == 1)) {
-        eAct = AMP_CLK_DISP;
-        pSyncMgr->m_iSyncAdjCnt = 0;
+#if 0
+    if(strncmp(hlstrickspeed, "1.5", 3))
+    {
+        if ((eAct != AMP_CLK_DISP) && (pSyncMgr->m_iSyncAdjCnt == 1)) {
+            eAct = AMP_CLK_DISP;
+            pSyncMgr->m_iSyncAdjCnt = 0;
+        }
     }
+#endif
+
 _Exit:
     AVSU1("[AVS][%d]CHECK_%s([%c][%c] V:0x%08x(%d), M:0x%08x(%d)[%d], "
           "AM:0x%08x, AM-V:%d)%s, usrdelay %d ms\n",
-- 
2.7.4

20220825_0001-frameworks-av-increase_audio_input_buffer.patch (525 bytes)   
diff --git a/media/codec2/sfplugin/CCodecBufferChannel.cpp b/media/codec2/sfplugin/CCodecBufferChannel.cpp
index 830829251..650317217 100644
--- a/media/codec2/sfplugin/CCodecBufferChannel.cpp
+++ b/media/codec2/sfplugin/CCodecBufferChannel.cpp
@@ -58,7 +58,7 @@ using CasStatus = hardware::cas::V1_0::Status;
 
 namespace {
 
-constexpr size_t kSmoothnessFactor = 4;
+constexpr size_t kSmoothnessFactor = 20;
 constexpr size_t kRenderingDepth = 3;
 
 // This is for keeping IGBP's buffer dropping logic in legacy mode other

(SW) Jason Ling

2022-08-25 14:42

developer   ~0010712

Hi Sangmin,

Please check the following folder
/release_by_fxn/tmp/0825_test_image

BFX-UA300:/ $ su
BFX-UA300:/ # getprop ro.vendor.vasott.version
v534r27test-20220825

Thanks,
Jason

(ALTech) Sangmin Choi

2022-08-25 15:27

developer   ~0010714

Hi, Jason,

Could you please build two test images using attached patch?
I'm sorry about frequent request, but I will visit LG to test urgent issue.

Firmware #1(SD Only)
- apply the enable_ampdiag_log.patch

Firmware #2(SD Only)
- apply the enable_ampdiag_log.patch
- apply the ta binary, it's not ready yet, I will let you know by Wechat when it's ready.

Could you please prepare the firmware #1 first?

Thank you.
enable_ampdiag_log.patch (402 bytes)   
diff --git a/prebuilts/bin/init.vas.sh b/prebuilts/bin/init.vas.sh
index 958d0f8..58517e2 100755
--- a/prebuilts/bin/init.vas.sh
+++ b/prebuilts/bin/init.vas.sh
@@ -22,6 +22,8 @@ echo "state 2 3" > /data/vendor/ledd_fifo
 
 # close AMP log messages, "ampdiag setmodl ALL 7" could reopen; samyang 20210412
 ampdiag setmodl ALL 0
+ampdiag setmodl DISPSRV 255
+ampdiag setmodl VDEC 255
 
 while true;
 do
enable_ampdiag_log.patch (402 bytes)   

(ALTech) Sangmin Choi

2022-08-25 15:57

developer   ~0010716

Hi, Dean,

Please apply this libvpp.ta file to Firmware #2.

Thank you.
outputimage_4296.zip (1,189,754 bytes)

(SW) Dean Chiang

2022-08-25 17:21

developer   ~0010717

Last edited: 2022-08-25 18:06

Hi Sangmin,

Firmware #1
/release_by_fxn/swan_test_image/20220825_mantis1496/BFX-UA300_20220825_SD_v534r27_enable_ampdiag_log

Firmware #2
/release_by_fxn/swan_test_image/20220825_mantis1496/BFX-UA300_20220825_SD_v534r27_enable_log_libvpp

Thank you.
Dean Chiang

(ALTech) Sangmin Choi

2022-09-06 09:17

developer   ~0010798

Hi, Jason,

Could you please build a test image attached 4 patches? (SD and ND)

Thank you.
0002-https-sc-debu-git.synaptics.com-gerrit-c-171604.patch (2,626 bytes)   
From 0f6052c9aea628c0b2358e909258b3e190377556 Mon Sep 17 00:00:00 2001
From: Tony Kim <Tony.Kim@synaptics.com>
Date: Mon, 5 Sep 2022 14:45:54 +0900
Subject: [PATCH 2/4] https://sc-debu-git.synaptics.com/gerrit/#/c/171604/

Change-Id: Ic4dc80977dbf4de63c80f907a0dcc7a2136557b5
---
 amp/src/service/display/src/disp_api.c | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/amp/src/service/display/src/disp_api.c b/amp/src/service/display/src/disp_api.c
index 640e40f..adb8bea 100755
--- a/amp/src/service/display/src/disp_api.c
+++ b/amp/src/service/display/src/disp_api.c
@@ -3220,6 +3220,8 @@ HRESULT DISP_VID_PushFrame(AMP_DISP_PLANE_ID uiPlaneId, VOID *handle, AMP_BD_ST
         return Ret;
     }
 
+    DISP_HIGH("handle:%p, uiPlaneId:%d, push pBD:%p\n", handle, uiPlaneId, pBD);
+
     disp_status_update_push_bd(uiPlaneId);
 
     pPlane = &(pDisp ->Plane[uiPlaneId]);
@@ -3229,12 +3231,13 @@ HRESULT DISP_VID_PushFrame(AMP_DISP_PLANE_ID uiPlaneId, VOID *handle, AMP_BD_ST
     } else {
         Ret = AMP_BD_Map(AMP_BD_GET_BDID(pBD), &hBD);
         if ((Ret != SUCCESS) || !hBD) {
-            DISP_ERROR("AMP_BD_Map fails, error code [%x]!", Ret);
+            DISP_ERROR("AMP_BD_Map fails, error code [%x]!\n", Ret);
             goto Disp_PushFrame_Exit0;
         }
+        DISP_HIGH("handle:%p, uiPlaneId:%d, ref hBD:%p\n", handle, uiPlaneId, hBD);
         Ret = AMP_BD_Ref(hBD);
         if (Ret != SUCCESS) {
-            DISP_ERROR("AMP_BD_Ref fails, error code [%x]!", Ret);
+            DISP_ERROR("AMP_BD_Ref fails, error code [%x]!\n", Ret);
             goto Disp_PushFrame_Exit1;
         }
     }
@@ -3393,6 +3396,17 @@ HRESULT DISP_VID_PopFrame(AMP_DISP_PLANE_ID uiPlaneId, VOID *handle, AMP_BD_HAND
         }
     }
 
+    BOOL bValid = FALSE;
+    UINT32 uiRefCnt = 0;
+    Ret = AMP_BD_GetStatus(hBD, &bValid, &uiRefCnt);
+    if (Ret != SUCCESS || !bValid || uiRefCnt == 1) {
+        DISP_ERROR("BD exception, AMP_BD_GetStatus hBD:%p ret=0x%x, valid:%d, "
+                "refCnt:%d, handle:%p, uiPlaneId:%d\n", hBD, Ret, bValid,
+                uiRefCnt, handle, uiPlaneId);
+        Ret = ERR_SWMODEWRONG;
+        goto Disp_PopFrame_Exit;
+    }
+
     Ret = AMP_BD_Unref(hBD);
     if (Ret != SUCCESS) {
         DISP_ERROR("AMP_BD_Unref fails, error code [%x]!", Ret);
@@ -3405,6 +3419,7 @@ HRESULT DISP_VID_PopFrame(AMP_DISP_PLANE_ID uiPlaneId, VOID *handle, AMP_BD_HAND
         goto Disp_PopFrame_Exit;
     }
 
+    DISP_HIGH("pop hBD:%p, handle:%p, uiPlaneId:%d\n", hBD, handle, uiPlaneId);
 Disp_PopFrame_Exit:
     return Ret;
 }
-- 
2.7.4

0001-https-sc-debu-git.synaptics.com-gerrit-c-162747.patch (1,147 bytes)   
From 4901b7d49a891d9fba0755cb076f9219fa806bed Mon Sep 17 00:00:00 2001
From: Tony Kim <Tony.Kim@synaptics.com>
Date: Mon, 5 Sep 2022 14:39:55 +0900
Subject: [PATCH 1/4] https://sc-debu-git.synaptics.com/gerrit/#/c/162747/

Change-Id: I9753ada3b4b4a78e46fbf2693ecaa47da43e9349
---
 amp/src/ddl/vcodec/comp_vdec/source/internal_vdec_api.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/amp/src/ddl/vcodec/comp_vdec/source/internal_vdec_api.c b/amp/src/ddl/vcodec/comp_vdec/source/internal_vdec_api.c
index 2351249..49c68f6 100755
--- a/amp/src/ddl/vcodec/comp_vdec/source/internal_vdec_api.c
+++ b/amp/src/ddl/vcodec/comp_vdec/source/internal_vdec_api.c
@@ -4398,7 +4398,7 @@ static HRESULT return_str_buf(VDecoder *pVDec) {
             AMP_BDCHAIN_PeekItem(pVDec->pvMetaBufQueue, 0, &hBDInChecking);
 
             ret = BDTagGetVMetaDesc(hBDInChecking, &pVmetaDescTag);
-            AMP_ASSERT(ret == SUCCESS);
+            //AMP_ASSERT(ret == SUCCESS);
             if (ret != SUCCESS) {
                 VDEC_LOGE("%p: hBD=%p don't have vmeta desc ret=%x",
                           pVDec, hBDInChecking, ret);
-- 
2.7.4

0004-https-sc-debu-git.synaptics.com-gerrit-c-171604-2.patch (7,692 bytes)   
From d36ea0b01af64bd56755835334e13673b0f8d9aa Mon Sep 17 00:00:00 2001
From: Tony Kim <Tony.Kim@synaptics.com>
Date: Mon, 5 Sep 2022 17:12:30 +0900
Subject: [PATCH 4/4] https://sc-debu-git.synaptics.com/gerrit/#/c/171604/2

Change-Id: Ic8fd170b2fb124fb6170148f6374ee9fcc8a86ea
---
 amp/src/service/display/src/disp_api.c | 22 ++++++++++++++--------
 amp/src/service/display/src/disp_prv.c | 16 +++++++++++++---
 2 files changed, 27 insertions(+), 11 deletions(-)

diff --git a/amp/src/service/display/src/disp_api.c b/amp/src/service/display/src/disp_api.c
index adb8bea..6e94f1e 100755
--- a/amp/src/service/display/src/disp_api.c
+++ b/amp/src/service/display/src/disp_api.c
@@ -2874,7 +2874,7 @@ HRESULT DISP_DEINT_ReturnInBDFn(void *pInst, AMP_BD_HANDLE hInBD)
 {
     DISP_PLANE *pPlane = (DISP_PLANE *)pInst;
     HRESULT ret = SUCCESS;
-    DISP_INFO("return Input BD from DEINT pPlane=%p hBD=%p to pOutputQue",
+    DISP_HIGH("return Input BD from DEINT pPlane=%p hBD=%p to pOutputQue\n",
               pPlane, hInBD);
     ret = AMP_BDCHAIN_PushItem(pPlane->pOutputQue, hInBD);
     ASSERT_RET_SHOW(ret, "AMP_BDCHAIN_PushItem outputQ=%p BD=%p ret=%x\n",
@@ -3061,6 +3061,7 @@ HRESULT DISP_DEINT_recy_OutBD(DISP_PLANE *pPlane, AMP_BD_HANDLE hBD)
 {
     HRESULT ret = SUCCESS;
     if (!isInBDChain(pPlane->pDEINTDispBDQ, hBD)) {
+        DISP_HIGH("pPlane:%p, push hBD:%p\n", pPlane, hBD);
         ret = AMP_BDCHAIN_PushItem(pPlane->pOutputQue, hBD);
         ASSERT_RET_SHOW(ret, "push item output que hBD=%p", hBD);
         return ret;
@@ -3260,6 +3261,7 @@ HRESULT DISP_VID_PushFrame(AMP_DISP_PLANE_ID uiPlaneId, VOID *handle, AMP_BD_ST
 #ifndef VPP_ENABLE_VPP_TA_IN_QUIESCENT_MODE
     if(g_quiescentMode)
     {   //Re-cycle immediately if VPP_TA is not present in quiescent mode
+        DISP_HIGH("uiPlaneId:%d, push hBD:%p\n", uiPlaneId, hBD); 
         Ret = AMP_BDCHAIN_PushItem(pPlane->pOutputQue, hBD);
         if (Ret != SUCCESS) {
             DISP_ERROR("DISP_DEINT_PushFrame fails, error code [%x]!", Ret);
@@ -3359,7 +3361,7 @@ HRESULT DISP_VID_PopFrame(AMP_DISP_PLANE_ID uiPlaneId, VOID *handle, AMP_BD_HAND
         }
 
         if (isTagPath(hBD, handle)) {
-            DISP_MID("find BD=%p from handle=%p", hBD, handle);
+            DISP_HIGH("find BD=%p from handle=%p\n", hBD, handle);
 
             /* set frame status to displayed */
             Ret = BD_GetFrameInfo(hBD, &pFrameInfo);
@@ -3383,10 +3385,10 @@ HRESULT DISP_VID_PopFrame(AMP_DISP_PLANE_ID uiPlaneId, VOID *handle, AMP_BD_HAND
                to unused before deleting the item from o/p queue*/
             if (is_last_frame(hBD)) {
                 if(gVPPMapTable.vpp_plane_map[uiPlaneId].is_video) {
-                    DISP_HIGH("free last frame here!!!");
+                    DISP_HIGH("free last frame here!!!\n");
                     video_plane_ref_bd(uiPlaneId, hBD, FALSE);
                 }
-                DISP_HIGH("Clearing the status of built-in frame of type REPEAT_LAST_FRAME");
+                DISP_HIGH("Clearing the status of built-in frame of type REPEAT_LAST_FRAME\n");
                 disp_last_frame_recycle(uiPlaneId);
             }
             Ret = AMP_BDCHAIN_DeleteItem(pPlane->pOutputQue, hBD);
@@ -3401,21 +3403,21 @@ HRESULT DISP_VID_PopFrame(AMP_DISP_PLANE_ID uiPlaneId, VOID *handle, AMP_BD_HAND
     Ret = AMP_BD_GetStatus(hBD, &bValid, &uiRefCnt);
     if (Ret != SUCCESS || !bValid || uiRefCnt == 1) {
         DISP_ERROR("BD exception, AMP_BD_GetStatus hBD:%p ret=0x%x, valid:%d, "
-                "refCnt:%d, handle:%p, uiPlaneId:%d\n", hBD, Ret, bValid,
-                uiRefCnt, handle, uiPlaneId);
+                "refCnt:%d, handle:%p, uiPlaneId:%d, *pBD:%p\n", hBD, Ret, bValid,
+                uiRefCnt, handle, uiPlaneId, *pBD);
         Ret = ERR_SWMODEWRONG;
         goto Disp_PopFrame_Exit;
     }
 
     Ret = AMP_BD_Unref(hBD);
     if (Ret != SUCCESS) {
-        DISP_ERROR("AMP_BD_Unref fails, error code [%x]!", Ret);
+        DISP_ERROR("AMP_BD_Unref fails, error code [%x]!\n", Ret);
         goto Disp_PopFrame_Exit;
     }
 
     Ret = AMP_BD_Unmap(hBD);
     if (Ret != SUCCESS) {
-        DISP_ERROR("AMP_BD_Unmap fails, hBD=%p error code [%x]!", hBD, Ret);
+        DISP_ERROR("AMP_BD_Unmap fails, hBD=%p error code [%x]!\n", hBD, Ret);
         goto Disp_PopFrame_Exit;
     }
 
@@ -5626,6 +5628,10 @@ HRESULT DISP_GFX_PushBD(AMP_DISP_PLANE_ID uiPlaneId, AMP_BD_ST *hBD)
     if(g_quiescentMode)
     {   //Re-cycle immediately if VPP_TA is not present in quiescent mode
         pFrameInfo->uStatus = AMP_FRAME_ST_DISPLAYED;
+
+        if (uiPlaneId == AMP_DISP_PLANE_MAIN) {
+            DISP_HIGH("uiPlaneId:%d, push hBD:%p\n", uiPlaneId, hBD);
+        }
         Ret = AMP_BDCHAIN_PushItem(pPlane->pOutputQue, hBD);
         GFX_STATUS_BROADCAST();
         return Ret;
diff --git a/amp/src/service/display/src/disp_prv.c b/amp/src/service/display/src/disp_prv.c
index ea13f6c..5ef14b0 100755
--- a/amp/src/service/display/src/disp_prv.c
+++ b/amp/src/service/display/src/disp_prv.c
@@ -955,7 +955,7 @@ HRESULT bdchain_move_items(DISP_PLANE *pPlane, AMP_BDCHAIN *pChainIn,
             else
 #endif
             {
-                DISP_INFO("move BD=%p %p -> %p",
+                DISP_HIGH("move BD=%p %p -> %p",
                         pFrame, pChainIn, pChainOut);
 
                 Ret = AMP_BDCHAIN_PushItem(pChainOut, pFrame);
@@ -2698,6 +2698,9 @@ VOID disp_callback_isr(VOID)
                 /* after push new frame, pervious BD is still displaying
                    and will be recycled in next V sync */
                 if (pPlane->LastBD) {
+                    if (PlaneId == AMP_DISP_PLANE_MAIN) {
+                        DISP_HIGH("PlaneId:%d, push hBD:%p\n", PlaneId, pPlane->LastBD);
+                    }
                     Ret = AMP_BDCHAIN_PushItem(pPlane->pOutputQue, pPlane->LastBD);
                     if (Ret != SUCCESS) {
                         DISP_ERROR("Push to pOutputQue hBD=%p fail ret=%x",
@@ -2710,9 +2713,12 @@ VOID disp_callback_isr(VOID)
                 /* current BD is build in frame, recycle it here */
                 if (pPlane->pCurrentDisp == pPlane->pDefaultLogo) {
                     if (pPlane->CurrentBD) {
+                        if (PlaneId == AMP_DISP_PLANE_MAIN) {
+                            DISP_HIGH("PlaneId:%d, push hBD:%p\n", PlaneId, pPlane->CurrentBD);
+                        }
                         Ret = AMP_BDCHAIN_PushItem(pPlane->pOutputQue, pPlane->CurrentBD);
                         if (Ret != SUCCESS) {
-                            DISP_ERROR("Push to pOutputQue hBD=%p fail ret=%x",
+                            DISP_ERROR("Push to pOutputQue hBD=%p fail ret=%x\n",
                                         pPlane->CurrentBD,
                                         Ret);
                         }
@@ -2795,9 +2801,13 @@ VOID disp_callback_isr_end(VOID)
                         if ((Ret != SUCCESS)||(!pFrameInfo))
                             DISP_ERROR(" BD_GetFrameInfo fails, BD:0x%x\n", hBD);
 
+                        if (PlaneId == AMP_DISP_PLANE_MAIN) {
+                            DISP_HIGH("PlaneId:%d, push hBD:%p\n", PlaneId, hBD);
+                        }
+
                         Ret = AMP_BDCHAIN_PushItem(pPlane->pOutputQue, hBD);
                         if (Ret != SUCCESS)
-                            DISP_ERROR("Push to pOutputQue hBD=%p fail ret=%x", hBD, Ret);
+                            DISP_ERROR("Push to pOutputQue hBD=%p fail ret=%x\n", hBD, Ret);
                     }
                 }
                 if(gVPPMapTable.vpp_plane_map[PlaneId].is_video) {
-- 
2.7.4

0003-empty_bd_pool-crash.patch (1,648 bytes)   
From b2b7abfcd9204142fd720a42b236cbc999f7f547 Mon Sep 17 00:00:00 2001
From: Tony Kim <Tony.Kim@synaptics.com>
Date: Mon, 5 Sep 2022 15:33:21 +0900
Subject: [PATCH 3/4] empty_bd_pool crash

Change-Id: Iadfedf188b151855a18c2455dbc104b728fc84ef
---
 amp/src/ddl/vcodec/comp_vdec/source/ddl_vdec.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/amp/src/ddl/vcodec/comp_vdec/source/ddl_vdec.c b/amp/src/ddl/vcodec/comp_vdec/source/ddl_vdec.c
index 9b3b0b1..e3828e6 100755
--- a/amp/src/ddl/vcodec/comp_vdec/source/ddl_vdec.c
+++ b/amp/src/ddl/vcodec/comp_vdec/source/ddl_vdec.c
@@ -774,9 +774,17 @@ static HRESULT empty_bd_pool(VDEC_HLD* pHld) {
     for(i = 0; i < pHld->uDispBDPoolSize; i++){
         rc = AMP_BDCHAIN_PopItem(pHld->pDispBDPoolQ, &hBD);
         if(rc == SUCCESS) {
-            VDEC_LOGM(VDECBD"pHld=%p free disp hBD=%p bdid=%d",
-                      pHld, hBD, AMP_BD_GET_BDID(hBD));
-            AMP_BD_Free(hBD);
+            HRESULT Ret = SUCCESS;
+            BOOL bValid = FALSE;
+            UINT32 uiRefCnt = 0;
+            Ret = AMP_BD_GetStatus(hBD, &bValid, &uiRefCnt);
+            if(Ret != SUCCESS || !bValid || (hBD == pHld->hLastBD)){
+                VDEC_LOGH(VDECBD"Exception in empty_bd_pool() hBD [%p] Ret[%d] bValid[%d] uiRefCnt[%d] \n", hBD, Ret, bValid, uiRefCnt);
+            } else {
+                VDEC_LOGM(VDECBD"pHld=%p free disp hBD=%p bdid=%d",
+                        pHld, hBD, AMP_BD_GET_BDID(hBD));
+                AMP_BD_Free(hBD);
+            }
         } else {
             VDEC_LOGH("pHld=%p Pop BD error", pHld);
             break;
-- 
2.7.4

0003-empty_bd_pool-crash.patch (1,648 bytes)   

(SW) Dean Chiang

2022-09-06 11:32

developer   ~0010804

Hi Sangmin,

Upload OK.
/release_by_fxn/swan_test_image/20220906_mantis1496

Thank you.
Dean Chiang

(ALTech) Sangmin Choi

2022-09-13 17:04

developer   ~0010846

Hi, Dean,

Could you please build a test image after remove following commit(SD and ND)?

vendor/synaptics/vssxx
commit fd5ceac09d614f466f789c81bcb1cd3c0be902ff
Author: Tony Kim <Tony.Kim@synaptics.com>
Date: Wed Feb 16 21:57:35 2022 +0900

    Flush pcm from audioHal when HDMI is in RAW format

Thank you.

(ALTech) Sangmin Choi

2022-09-14 08:44

developer   ~0010848

Hi, Dean,

And, please build a test image one more with attached patches.

Thank you.

(SW) Dean Chiang

2022-09-15 14:45

developer   ~0010873

Hi Sangmin,

Upload ok.
for developer 0001496:0010846:
/release_by_fxn/swan_test_image/20220914_mantis1496

for developer 0001496:0010848
/release_by_fxn/swan_test_image/20220912_mantis1496

Thank you.
Dean Chiang

(ALTech) Sangmin Choi

2022-09-23 13:34

developer   ~0010921

Hi, Dean,

Could you please build a test image enable the Google Standard Launcher? (ND, SD, SU)
We got the ND and SD images before, but SU image is also needed. Because Disney Plus is only searchable under user build image.

It's enough to get SU image only, but I want to get all images - ND, SD, SU.
If there is any situation to debug, it's hard to checking with only SU image.

Thank you.

(SW) Dean Chiang

2022-09-23 16:44

developer   ~0010928

Hi Sangmin,

Upload ok.
/release_by_fxn/swan_test_image/20220923_mantis1496

Thank you.
Dean Chiang

(ALTech) Sangmin Choi

2022-09-27 08:15

developer   ~0010936

Hi, Dean,

As I told you yesterday, the firmware which is applied Google Standard Launcher has below problem.

- When I press the front power button, the BTV Launcher is launched.

Could you please fix this issue? I want to operate the STB with Google Standard Launcher only.

Thank you.

(SW) Dean Chiang

2022-09-27 14:52

developer   ~0010939

Hi Sangmin,

Upload ok.
/release_by_fxn/swan_test_image/20220926_mantis1496

Thank you.
Dean Chiang

(ALTech) Sangmin Choi

2022-10-06 15:56

developer   ~0010979

Hi, Dean,

Could you please build a test image with attached patch? (SD and ND)

Thank you.
7fe1241.diff (1,322 bytes)   
From 7fe1241544eb6a2caa7dee06006f0a4f6d1412cc Mon Sep 17 00:00:00 2001
From: Zhiliang Wang <Zhiliang.Wang@synaptics.com>
Date: Thu, 11 Mar 2021 18:15:24 +0800
Subject: [PATCH] AMP: DMX: refine the logic of pushBuff for Eos case

after Eos event, it needs to  sync output buffer before
pushing es buffer in case the residue data is missed

Jira : https://synaextjira.atlassian.net/browse/LGUG-359

Cherry pick from https://sc-debu-git.synaptics.com/gerrit/#/c/150230/

Change-Id: Ifb19b8cb916edce9970675b57bb3853c23a45805
Reviewed-on: https://sc-debu-git.synaptics.com/gerrit/150230
Reviewed-by: Lingfeng Mao <Lingfeng.Mao@synaptics.com>
Reviewed-on: https://sc-debu-git.synaptics.com/gerrit/172159
Reviewed-by: Tony Kim <Tony.Kim@synaptics.com>
---

diff --git a/amp/src/ddl/dmx/comp/core/src/dmx_strm_es.c b/amp/src/ddl/dmx/comp/core/src/dmx_strm_es.c
index eef3dd0..1dca7c9 100755
--- a/amp/src/ddl/dmx/comp/core/src/dmx_strm_es.c
+++ b/amp/src/ddl/dmx/comp/core/src/dmx_strm_es.c
@@ -2248,6 +2248,8 @@
     Eos = internal_IsEos(pStrm, -1);
     if(Eos == TRUE) {
         DMX_HIGH("NPM:Strm[%d] EOS Ctrl arrives\n",pStrm->uiStrmId);
+        /* after EOS event, it needs to sync output to get all the data*/
+        DMX_Stream_SyncOutput(pStrm);
     }
 
     uNewCome = pStrm->uiOutDataCnt - pStream->uPushedDataCnt;
7fe1241.diff (1,322 bytes)   

(SW) Dean Chiang

2022-10-06 19:40

developer   ~0010983

Hi Sangmin,

Upload ok.
/release_by_fxn/swan_test_image/20221006_mantis1496

Thank you.
Dean Chiang

(ALTech) Sangmin Choi

2022-10-13 10:21

developer   ~0011036

Hi, Dean,

Could you please build a test image with attached patch? (SD and ND)

Thank you.
0001-MMCEI-9987-congested-vbi-interrupt-filtering-2.patch (1,959 bytes)   
From e50919239f94082182e6e0d6fa2dd2cd253bd718 Mon Sep 17 00:00:00 2001
From: Tony Kim <Tony.Kim@synaptics.com>
Date: Wed, 12 Oct 2022 14:47:57 +0900
Subject: [PATCH] [MMCEI-9987] congested vbi interrupt filtering (2)

Change-Id: Ic28f13d36d69ba3ce448a454b10b27aed4e83285
---
 amp/src/hal/vpp/g4_hdr/ca_wrapper/source/vpp_api_tz.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/amp/src/hal/vpp/g4_hdr/ca_wrapper/source/vpp_api_tz.c b/amp/src/hal/vpp/g4_hdr/ca_wrapper/source/vpp_api_tz.c
index 2cd572c..0889acd 100644
--- a/amp/src/hal/vpp/g4_hdr/ca_wrapper/source/vpp_api_tz.c
+++ b/amp/src/hal/vpp/g4_hdr/ca_wrapper/source/vpp_api_tz.c
@@ -112,6 +112,7 @@ int VPP_Suspend_request = 0;
 int VPP_Exit_Flag = 0;
 int VPP_isr_task_exited = 0;
 
+static int VPP_playback_started = 0;
 /* Static functions */
 static HRESULT VPP_ISR_GetMsg(MV_CC_MSG_t * pMsg)
 {
@@ -160,7 +161,8 @@ static VOID VPP_ISR_Task(VOID)
             vbiDrop = 0;
             if (isVBIIntr(msg.m_Param1)){
                 timeDiff = VPPDRV_vppIntrFreqMonitorGen(VPPDRV_CA_VPPOBJ, VPPDRV_INTR_MONITOR_UINT0_VBI_INTR, VPPDRV_INTR_MONITOR_START, VPPDRV_INTR_MONITOR_NOSHOW);
-                if (timeDiff < VPP_MIN_ALLOWED_SCHEDULE_DELAY) {
+                //Allow dropping only after playback is started
+                if (VPP_playback_started && timeDiff < VPP_MIN_ALLOWED_SCHEDULE_DELAY) {
                      //bCLR_VBI_INTR(msg.m_Param1);
                      vbiDrop = 1;
                      printf("%s:%d: Drop VBI interrupt : %x\n", __func__, __LINE__, timeDiff);
@@ -1099,6 +1101,9 @@ INT MV_VPPOBJ_DisplayFrame(INT handle, INT planeID, VOID *frame)
     pDesc = (VDEC_VID_BUF_DESC *)frame;
     pVBufInfo = pDesc->user_data;
     pVBufInfo->m_hDesc = (UINT32)frame;
+    if (!pVBufInfo->builtinFrame) {
+        VPP_playback_started = 1;
+    }
 #if 1
     if(pVBufInfo->m_dv_present_mode == VPP_DOLBY_PRESENT_BL_EL_METADATA)
     {
-- 
2.7.4

(SW) Dean Chiang

2022-10-14 14:29

developer   ~0011048

Hi Sangmin,

Upload ok.
/release_by_fxn/swan_test_image/20221014_mantis1496

Thank you.
Dean Chiang

(ALTech) Sangmin Choi

2022-11-10 09:02

developer   ~0011194

Hi, Dean,

Could you please build a test image with following branch? (SD and ND)

path : vendor/synaptics/btv-hal-impl/synaptics
branch : soc-syna/BTF_API_LEVEL_6/bg5ct/ua300_BTVV-4766

$ cd vendor/synaptics/btv-hal-impl/synaptics
$ git log -1
commit d3d729bb3fbe42368a808163d1a2aac32360a579 (HEAD -> ua300_BTVV-4766, soc-syna/BTF_API_LEVEL_6/bg5ct/ua300_BTVV-4766)
Author: kim gwang sung <jung2604@sptek.co.kr>
Date: Wed Nov 9 12:00:56 2022 +0900

    [BTVV-4766] AI2/AI Sound MAX 업데이트 이후 채널 이동 시 순간 잡음 발생
           - 시냅틱스 가이드 패치 적용

Thank you.

(SW) Jason Ling

2022-11-10 12:28

developer   ~0011199

Hi Sangmin,

Please check the following folder of your FTP

release_by_fxn/tmp/BTVV-4766

Thanks,
Jason

(ALTech) Sangmin Choi

2022-11-16 15:31

developer   ~0011233

Hi, Dean,

Could you please build a test image with attached patch? (SD and ND)

Thank you.
1274333_0001-PATCH-MMCEI-9987-congested-vbi-interrupt-filtering-3.patch (2,918 bytes)   
From bc9ce81318cd8c2b364cc1e16e6fe7de5f94b713 Mon Sep 17 00:00:00 2001
From: Tony Kim <Tony.Kim@synaptics.com>
Date: Fri, 11 Nov 2022 17:06:55 +0900
Subject: [PATCH] [PATCH] [MMCEI-9987] congested vbi interrupt filtering (3)

Change-Id: I652b6d64efa7b8f854c1ad77e17e1f538445a86a
---
 amp/src/hal/vpp/g4_hdr/ca_wrapper/source/vpp_api_tz.c |  6 +++++-
 amp/src/service/display/src/disp_prv.c                | 12 ++++++++++++
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/amp/src/hal/vpp/g4_hdr/ca_wrapper/source/vpp_api_tz.c b/amp/src/hal/vpp/g4_hdr/ca_wrapper/source/vpp_api_tz.c
index 0889acd..b8b2505 100644
--- a/amp/src/hal/vpp/g4_hdr/ca_wrapper/source/vpp_api_tz.c
+++ b/amp/src/hal/vpp/g4_hdr/ca_wrapper/source/vpp_api_tz.c
@@ -480,6 +480,7 @@ INT MV_VPPOBJ_Suspend(INT handle, BOOL optimize)
     VPP_LOG("%s \n", __FUNCTION__);
 
     Ret = VppSuspend(optimize);
+    VPP_playback_started = 0; //toto add 
 
     return (Ret);
 }
@@ -1087,6 +1088,9 @@ INT MV_VPPOBJ_EarlyDisplayFrame(INT handle, INT planeID, VOID *frame)
  *         MV_EUNCONFIG - VPP not configured or plane not active
  *         MV_EFRAMEQFULL - frame queue is full
  *******************************************************************/
+ int g_last_video_plane_dst_x =0;
+ int g_last_video_plane_dst_y =0;
+
 INT MV_VPPOBJ_DisplayFrame(INT handle, INT planeID, VOID *frame)
 {
     VDEC_VID_BUF_DESC *pDesc;
@@ -1101,7 +1105,7 @@ INT MV_VPPOBJ_DisplayFrame(INT handle, INT planeID, VOID *frame)
     pDesc = (VDEC_VID_BUF_DESC *)frame;
     pVBufInfo = pDesc->user_data;
     pVBufInfo->m_hDesc = (UINT32)frame;
-    if (!pVBufInfo->builtinFrame) {
+    if (!pVBufInfo->builtinFrame && g_last_video_plane_dst_x && g_last_video_plane_dst_y ) {
         VPP_playback_started = 1;
     }
 #if 1
diff --git a/amp/src/service/display/src/disp_prv.c b/amp/src/service/display/src/disp_prv.c
index 5ef14b0..7760f0a 100755
--- a/amp/src/service/display/src/disp_prv.c
+++ b/amp/src/service/display/src/disp_prv.c
@@ -1556,6 +1556,8 @@ video_setscale_ratioctrl_exit:
     return Ret;
 }
 
+ extern int g_last_video_plane_dst_x;
+ extern int g_last_video_plane_dst_y;
 VOID set_scale_handler(DISP_PLANE *pPlane, MV_CC_MSG_t *pMsg)
 {
     BOOL DstInvalid = FALSE;
@@ -1625,6 +1627,16 @@ VOID set_scale_handler(DISP_PLANE *pPlane, MV_CC_MSG_t *pMsg)
     pPlane->DesiredWins.dst.x, pPlane->DesiredWins.dst.y,
     pPlane->DesiredWins.dst.width, pPlane->DesiredWins.dst.height,
     pPlane->ScalingMode);
+    
+    DISP_MODULE *pDisp;
+    pDisp = gDispModule;
+
+    if (pPlane == &(pDisp->Plane[AMP_DISP_PLANE_MAIN]) )
+    {
+        //store the last scaling param for main video 
+        g_last_video_plane_dst_x = pPlane->DesiredWins.dst.x;
+        g_last_video_plane_dst_y = pPlane->DesiredWins.dst.y;
+    }
 
     AmpFree(pScalingWins);
 }
-- 
2.7.4

(SW) Dean Chiang

2022-11-16 18:18

developer   ~0011235

Hi Sangmin,

Upload ok.
/release_by_fxn/swan_test_image/2022116_mantis1496

Thank you.
Dean Chiang

(ALTech) Sangmin Choi

2022-12-05 12:38

developer   ~0011391

Hi, Dean,

Could you please build a test image with attached patch? (SD and SU)

Thank you.
0001-remove_zram_swap_file.patch (866 bytes)   
diff --git a/fstab.a.sequoia.29 b/fstab.a.sequoia.29
index 88cf29d..409904a 100644
--- a/fstab.a.sequoia.29
+++ b/fstab.a.sequoia.29
@@ -19,4 +19,4 @@ product         /product       ext4      ro,barrier=1                    wait,av
 /devices/platform/soc/f7ed0000.usb*        auto                auto      defaults                 voldmanaged=usb:auto,encryptable=userdata
 /devices/platform/soc/f7ab0000.sdhci/mmc_host/mmc1/mmc*  auto  auto      defaults                 voldmanaged=sdcard:auto,encryptable=userdata
 
-/dev/block/zram0                           none                swap      defaults                 zramsize=1073741824,max_comp_streams=4,zram_loopback_path=/data/unencrypted/zram_swap,zram_loopback_size=512M
+/dev/block/zram0                           none                swap      defaults                 zramsize=1073741824,max_comp_streams=4

(SW) Dean Chiang

2022-12-05 17:04

developer   ~0011396

Hi Sangmin,

Upload ok.
/release_by_fxn/swan_test_image/20221205_mantis1496

Thank you.
Dean Chiang

(ALTech) Sangmin Choi

2022-12-06 10:45

developer   ~0011402

Hi, Dean,

The last test image(20221205_mantis1496) was built based on 535 branches.
535 branches is a special branch, so please build the test image based on 534 branches.

You don't need to rebuild the last test image(20221205_mantis1496), but please be careful next time.

Thank you.

(ALTech) Sangmin Choi

2022-12-06 12:26

developer   ~0011404

Hi, Dean,

Could you please build a test firmware? SD only.

1. based on BFX-UA300_5.3.5_2022-1201-110011.xml
2. update the vendor/skb/framework/btf branch, following commit should be applied
commit ba15b7427527a901b4fc008be7693ac7ba2937a8 (skb_bcf/BFX-UA300_5.3.5)
Author: kim gwang sung <jung2604@sptek.co.kr>
Date: Mon Dec 5 16:26:10 2022 +0900

    [BPM-12763] [5.3.5a Hotfix] 예고편 시청 후 본편 이어보기 시, Player 조작 불가 -
        - 이슈 : 예고편 컨텐츠를 SEEK로 끝까지 이동하면 서버에서 내려주는 데이터에 iframe이 없는 경우
                 시간체크를 하는 스레드 무한루프에 빠져이전 값을 계속 사용하는 버그로 인해서 UI가 키동작이 되지 않음
        - 해결 : RTSP가 STOP상태이면 시간체크 스레드를 빠져나가도록 수정
        - VERSION_NUM = "6.0.10_535"; BUILD_DATE = "2022-12-05_16:52:54";

This firmware is based on 535 branches.

Thank you.

(SW) Dean Chiang

2022-12-06 14:46

developer   ~0011405

Hi Sangmin,

Upload ok.
/release_by_fxn/swan_test_image/20221206_mantis1496

Thank you.
Dean Chiang

(ALTech) Sangmin Choi

2022-12-09 10:44

developer   ~0011439

Hi, Dean,

Could you please build a test firmware after applied attached patches? SD only.

This firmware is based on 534 branches.

vendor/synaptics/btv-hal-impl/synaptics
AI2-100-amp_wrapper-2.patch

syna-release/ampsdk
AI2-100-vdec-1.patch

Thank you.
AI2-100-vdec-1.patch (20,362 bytes)   
diff --git a/amp/src/ddl/vcodec/comp_vdec/source/ddl_vdec.c b/amp/src/ddl/vcodec/comp_vdec/source/ddl_vdec.c
index 1c74a88..9f3a6bd 100755
--- a/amp/src/ddl/vcodec/comp_vdec/source/ddl_vdec.c
+++ b/amp/src/ddl/vcodec/comp_vdec/source/ddl_vdec.c
@@ -233,6 +233,7 @@ typedef struct {
     // for dump
     FILE                    *fpYUV;
     FILE                    *fpES;
+    FILE                    *fpES2;
     // for checking allocate memory size
     UINT32                  uiPrevYuvWidth;
     UINT32                  uiPrevYuvHeight;
@@ -298,7 +299,7 @@ static const UINT32 uiBlockSize = 64;
 static HRESULT putGuardBlock(COMPONENT hInstance, AMP_BD_HANDLE hBD,
                              INT32 x, INT32 y);
 static HRESULT dumpYUV(COMPONENT hInstance, AMP_BD_HANDLE hBD);
-static HRESULT dumpES(COMPONENT hInstance, AMP_BD_HANDLE hBD);
+static HRESULT dumpES(COMPONENT hInstance, AMP_BD_HANDLE hBD, BOOL input);
 
 static UINT32 g_bIsGuardEntering = 0;
 static UINT32 g_bIsGuardLeaving = 0;
@@ -687,6 +688,12 @@ static HRESULT DDL_VDEC_doDestroy(COMPONENT hInstance)
             fclose(pHld->fpES);
             pHld->fpES = NULL;
         }
+        if (pHld->fpES2) {
+            VDEC_LOGI("dump es done before return\n");
+            fclose(pHld->fpES2);
+            pHld->fpES2 = NULL;
+        }
+
         if (pHld->fpYUV) {
             VDEC_LOGI("dump yuv done\n");
             fclose(pHld->fpYUV);
@@ -883,7 +890,9 @@ HRESULT DDL_VDEC_Open(COMPONENT hInstance,
     pPort->stInfo.pMediaCap[0] = 0xf000000;
 
     pHld->uMode = config->mode;
-    pHld->uCBufSize = config->uiSHMSize;
+    if ((config->uiFlag & AMP_VDEC_MODE_FRAME_IN) == 0) {
+        pHld->uCBufSize = config->uiSHMSize;
+    }
     pHld->hLastBD = NULL;
     pHld->hVdec = NULL;
 
@@ -1523,11 +1532,15 @@ static HRESULT handleSetupPort(COMPONENT hInstance, AMP_PORT_IO ePortIo,
             PORT *pPeerPort = &hPeerInstance->pPort[AMP_PORT_OUTPUT][pPort->stConn.uiPeerPortIdx];
             pHld->uCBufSize = pPeerPort->stInfo.uiBufSize;
             DDL_COMPONENT_UnlockConnection(hInstance, AMP_PORT_INPUT, uiPortIdx);
-            VDEC_LOGH("NOTE: DMX SetupPort, uCBufSize=0x%x\n", pHld->uCBufSize);
+            if(!VDec_IsFrameInMode(pHld->hVdec)) {
+                    VDEC_LOGH("NOTE: DMX SetupPort, uCBufSize=0x%x\n", pHld->uCBufSize);
 
-            result = Vdec_ConfigCBlock(pHld->hVdec, pHld->uCBufSize, 0, 0,
-                                       pHld->uWrapBufAddr, pHld->uWrapBufAddrVir);
-            DDLAssertReturn(result);
+                    result = Vdec_ConfigCBlock(pHld->hVdec, pHld->uCBufSize, 0, 0,
+                                               pHld->uWrapBufAddr, pHld->uWrapBufAddrVir);
+                    DDLAssertReturn(result);
+            } else {
+                VDEC_LOGH("NOTE: not set CBUF pool size under frame in mode, uCBufSize=0x%x\n", pHld->uCBufSize);
+            }
         } else {
             VDEC_LOGH("NOTE: OMX or others SetupPort, uCBufSize = 0x%x\n", pHld->uCBufSize);
             result = Vdec_ConfigCBlock(pHld->hVdec, pHld->uCBufSize, 0, 0,
@@ -2404,6 +2417,7 @@ HRESULT DDL_Callback(UINT32 uiEvent, UINT32 uiParam1, UINT32 uiParam2,
 
                 DDLAssertReturn(DescPoolSetFlagByAddr(pHld->hStrmDescPool,
                         pVmetaDescTag->uDesc, VMETA_DESC_SLOT_FREE));
+                dumpES(hInstance, hBD, FALSE);
                 DDLAssertReturn(AMP_BDTAG_DelTail(hBD));
                 hRet = BDTagGetVMetaDesc(hBD, &pVmetaDescTag);
                 if (hRet == SUCCESS) {
@@ -2412,8 +2426,9 @@ HRESULT DDL_Callback(UINT32 uiEvent, UINT32 uiParam1, UINT32 uiParam2,
                 }
                 UINT32 uNum = 0;
                 DDLAssertReturn(DescPoolGetBusyNumber(pHld->hStrmDescPool, &uNum));
-                VDEC_LOGM(COMPVDEC"Return Stream BD=%p bdid=%d left (%d)\n",
-                          hBD, AMP_BD_GET_BDID(hBD), uNum);
+                VDEC_LOGH(COMPVDEC"Return Stream BD=%p bdid=%d size:%d, left (%d)\n",
+                          hBD, AMP_BD_GET_BDID(hBD), pTag->uSize, uNum);
+
                 DDLAssertCheck(AMP_SHM_Unref(pTag->uMemHandle));
                 DDLAssertReturn(releaseStrmBuf(hInstance, hBD));
             }
@@ -2695,7 +2710,7 @@ HRESULT VDEC_ACTION_PushBuf(VDEC_HLD *pHld, AMP_BD_HANDLE hBD) {
             0, 0, FALSE));
     }
 #endif
-    VDEC_LOGM(COMPVDEC"Push stream %p (%x)\n", hBD, AMP_BD_GET_BDID(hBD));
+    VDEC_LOGH(COMPVDEC"Push stream %p (%x), size:%d\n", hBD, AMP_BD_GET_BDID(hBD), pDesc->size);
 
     if ((pTag->uFlag & AMP_MEMINFO_FLAG_FLUSH_MASK) != 0) {
         DDLAssertCleanup(fillFlushBDBuffer(hInstance, pTag->uFlag));
@@ -2718,7 +2733,7 @@ HRESULT VDEC_ACTION_PushBuf(VDEC_HLD *pHld, AMP_BD_HANDLE hBD) {
     }
 
     BDResetUnitStart(pHld->hVdec, hBD);
-    dumpES(hInstance, hBD);
+    dumpES(hInstance, hBD, TRUE);
     DDLAssertCleanup(Vdec_EmptyThisBuffer(pHld->hVdec, hBD));
     return hRet;
 
@@ -3183,7 +3198,7 @@ Exit:
     return SUCCESS;
 }
 
-HRESULT dumpES(COMPONENT hInstance, AMP_BD_HANDLE hBD)
+HRESULT dumpES(COMPONENT hInstance, AMP_BD_HANDLE hBD, BOOL input)
 {
 #ifndef ENABLE_VDEC_DUMP_ES
     MV_UNUSED(hInstance);
@@ -3192,6 +3207,7 @@ HRESULT dumpES(COMPONENT hInstance, AMP_BD_HANDLE hBD)
     VDEC_HLD *pHld = hInstance->pHld;
     VDecoder *pVDec;
     FILE **fpp = &(pHld->fpES);
+    FILE **fpp2 = &(pHld->fpES2);
     HRESULT ret = SUCCESS;
     VOID *pVirtAddr = NULL;
     VOID *pPhyAddr = NULL;
@@ -3209,6 +3225,12 @@ HRESULT dumpES(COMPONENT hInstance, AMP_BD_HANDLE hBD)
             fclose(*fpp);
             *fpp = NULL;
         }
+        if (*fpp2 != NULL) {
+            VDEC_LOGH("dump es done\n");
+            fclose(*fpp2);
+            *fpp2 = NULL;
+        }
+
         return SUCCESS;
     }
 
@@ -3252,6 +3274,37 @@ HRESULT dumpES(COMPONENT hInstance, AMP_BD_HANDLE hBD)
         }
     }
 
+    if (*fpp2 == NULL) {
+        char filename[FILENAME_LEN] = {0};
+        char *dirname;
+        if (g_pDumpDirName[0] == '\0') {
+            dirname = checkDumpDir();
+            if (dirname == NULL) {
+                return VDEC_IOFAIL;
+            }
+        } else {
+            dirname = g_pDumpDirName;
+        }
+        char *timebuf = getFTime();
+        if (timebuf == NULL) {
+            return HRESULT_GEN(VDEC, ERR_NOSWRSC);
+        }
+        ret = snprintf(filename, FILENAME_LEN, "%s/vdec_%s_%p_%s_bak.es",
+                       dirname, showFmtId(pVDec->strmCfg.format), pVDec, timebuf);
+        free(timebuf);
+        if (ret > FILENAME_LEN) {
+            VDEC_LOGE("filename %s greater than %d\n", filename, FILENAME_LEN);
+            return HRESULT_GEN(VDEC, ERR_NOSWRSC);
+        }
+        VDEC_LOGH("vdec %p dump es to file %s\n", pHld, filename);
+        *fpp2 = fopen(filename, "w");
+        if (*fpp2 == NULL) {
+            VDEC_LOGE("open file  fail %d %s\n", errno, strerror(errno));
+            return VDEC_IOFAIL;
+        }
+    }
+
+
     if (ShmType & AMP_SHM_FLAG_SECURE) {
 #ifdef TZ_DUMP
         if (register_debugTA() == SUCCESS) {
@@ -3289,8 +3342,14 @@ HRESULT dumpES(COMPONENT hInstance, AMP_BD_HANDLE hBD)
     }
 
     BD_SwConsume(hBD, pVDec->pTeeCtx);
-    fwrite((UINT8 *)pVirtAddr, 1, pStrmBufDesc->size, *fpp);
-    fflush(*fpp);
+
+    if (input) {
+        fwrite((UINT8 *)pVirtAddr, 1, pStrmBufDesc->size, *fpp);
+        fflush(*fpp);
+    } else {
+        fwrite((UINT8 *)pVirtAddr, 1, pStrmBufDesc->size, *fpp2);
+        fflush(*fpp2);
+    }
 
 #endif
     return SUCCESS;
diff --git a/amp/src/ddl/vcodec/comp_vdec/source/internal_vdec_api.c b/amp/src/ddl/vcodec/comp_vdec/source/internal_vdec_api.c
index 2351249..cf71064 100755
--- a/amp/src/ddl/vcodec/comp_vdec/source/internal_vdec_api.c
+++ b/amp/src/ddl/vcodec/comp_vdec/source/internal_vdec_api.c
@@ -3178,7 +3178,7 @@ static HRESULT consume_user_data_sei(VDecoder *pVDec, USER_DATA_BLOCK_HEADER *pH
             pVDec->sHdrInfo.MaxFALL = readU16(p + 2);
             return SUCCESS;
         default:
-            VDEC_LOGH("%p: ignore user_data SEI type=%x", pVDec, pHeader->m_type);
+            VDEC_LOGL("%p: ignore user_data SEI type=%x", pVDec, pHeader->m_type);
             return ERR_UNHANDLED;
     }
 }
@@ -4454,6 +4454,7 @@ static HRESULT return_str_buf(VDecoder *pVDec) {
             pVDec->uNoDecStrmSize -= pStrmBufDescInChecking->size;
 
             if (pVDec->uiDecodeMode != AMP_VDEC_IOPARAM_DECODE_REVERSE) {
+                VDEC_LOGH("pVDec:%p, return_es, hBD:%p\n", pVDec, hBDInChecking);
                 VDECLOGIFERR(pVDec->hCB(AMP_VDEC_EVENT_EMPTY_ES_DONE,
                                         (UINT32)hBDInChecking, 0, pVDec->uiCBData))
             }
@@ -4541,6 +4542,7 @@ static HRESULT internal_stop_stream(VDecoder *pVDec) {
     for (i = 0; i < uNum; i++) {
         VDECLOGIFERR(AMP_BDCHAIN_PopItem(pVDec->pvMetaBufQueue, &hBD))
         if (pVDec->uiDecodeMode != AMP_VDEC_IOPARAM_DECODE_REVERSE) {
+            VDEC_LOGH("pVDec:%p, return_es, hBD:%p\n", pVDec, hBD);
             VDECLOGIFERR(pVDec->hCB(AMP_VDEC_EVENT_EMPTY_ES_DONE,
                     (UINT32) hBD, 0, pVDec->uiCBData))
         }
@@ -4550,6 +4552,7 @@ static HRESULT internal_stop_stream(VDecoder *pVDec) {
     for (i = 0; i < uNum; i++) {
         VDECLOGIFERR(AMP_BDCHAIN_PopItem(pVDec->pStrmBufQueue, &hBD))
         if (pVDec->uiDecodeMode != AMP_VDEC_IOPARAM_DECODE_REVERSE) {
+            VDEC_LOGH("pVDec:%p, return_es, hBD:%p\n", pVDec, hBD);
             VDECLOGIFERR(pVDec->hCB(AMP_VDEC_EVENT_EMPTY_ES_DONE,
                     (UINT32) hBD, 0, pVDec->uiCBData))
         }
@@ -4571,6 +4574,7 @@ static HRESULT internal_stop_stream(VDecoder *pVDec) {
             case CMD_IBUFNOTIFY:
                 if (pVDec->uiDecodeMode != AMP_VDEC_IOPARAM_DECODE_REVERSE) {
                     unpackMsgIBuf(msg, &hBD, NULL);
+                    VDEC_LOGH("pVDec:%p, return_es, hBD:%p\n", pVDec, hBD);
                     VDECLOGIFERR(pVDec->hCB(AMP_VDEC_EVENT_EMPTY_ES_DONE,
                                             (UINT32)hBD, 0, pVDec->uiCBData))
                 }
@@ -5906,7 +5910,6 @@ HRESULT decode_video(VDecoder *pVDec) {
     VMETA_CBLOCK *pCblk = pVDec->pStrmCtrlBlock->pVir;
     MV_UNUSED(pCblk);
 
-    VDECPRT("tony trace inside decode_stream_main_loop - 2-1. enter decode_video() \n", __LINE__);
     if (pHalDecoder->check_strm_buffer
           && (pVDec->bInFlush == false)
           && (pCblk->uFrameInMode == FRAME_IN_NO_32B_ALIGN)
@@ -5927,6 +5930,7 @@ HRESULT decode_video(VDecoder *pVDec) {
             SETSTATE(pVDec->eState, VDEC_STATE_WAIT_INPUT_BUFFER)
             VDEC_LOGH("%p:"BUFSTR"Check Stream Count %d\n", pVDec,
                 pVDec->uiPushedStrmBufCount);
+            updateStrmThreshFrameCheck(pVDec);
             return SUCCESS;
         }
     }
@@ -5941,7 +5945,6 @@ HRESULT decode_video(VDecoder *pVDec) {
         return SUCCESS;
     VdecAssertReturn(hRet);
 
-    VDECPRT("tony trace inside decode_stream_main_loop - 2-2. before pHalDecoder->decode_stream() \n", __LINE__);
     while (1) {
         int dret = 0;
         int ud;
@@ -5958,7 +5961,6 @@ HRESULT decode_video(VDecoder *pVDec) {
             VDEC_LOGE("%p: pHalDecode recoverable error=%d, continue to decode", pVDec, dret);
         }
 
-    VDECPRT("tony trace inside decode_stream_main_loop - 2-3. before waitIRQ() \n", __LINE__);
         if(pHalDecoder->waitIRQ){
             if (pVdecStrmStatus->wait_for_int) {
                 //VDECPRT("%p:before Int\n", pVDec);
@@ -5969,7 +5971,6 @@ HRESULT decode_video(VDecoder *pVDec) {
             }
         }
 
-    VDECPRT("tony trace inside decode_stream_main_loop - 2-4. after waitIRQ() \n", __LINE__);
         performance_monitor(pVDec, pVdecStrmStatus, ud);
 #ifndef TRUSTZONE
         if((pVdecStrmStatus->event_id == VDEC_EVENT_SYNCWORD) && (pCblk->uiUserDataMask != 0)){
@@ -5999,7 +6000,6 @@ HRESULT decode_video(VDecoder *pVDec) {
         break;
     }
 
-    VDECPRT("tony trace inside decode_stream_main_loop - 2-5. if we reach here.... () \n", __LINE__);
     // if we reach here,
     // 1) One frame decoding finished, switch point comes
     // 2) VDEC_EVENT_ALLOC_STR_BUF
@@ -6133,12 +6133,14 @@ static void decode_stream_process_msg(VDecoder *pVDec, MV_CC_MSG_t *pMsg) {
                 if (uEndPos < pVDec->uGopStartPos) {
                     VDECPRT("%p:"REVERSE" recycle stream buffer %p\n", pVDec, hBD);
                     VDECLOGIFERR(AMP_BDCHAIN_PopItem(pVDec->pRevStrmQueue, &hBD));
+                    VDEC_LOGH("pVDec:%p, return_es, hBD:%p\n", pVDec, hBD);
                     VDECLOGIFERR(pVDec->hCB(AMP_VDEC_EVENT_EMPTY_ES_DONE,
                             (UINT32) hBD, 0, pVDec->uiCBData));
                 } else if (uEndPos - pVDec->uGopStartPos >
                          uiThresh) {
                     VDECPRT("%p:"REVERSE" recycle stream buffer %p\n", pVDec, hBD);
                     VDECLOGIFERR(AMP_BDCHAIN_PopItem(pVDec->pRevStrmQueue, &hBD));
+                    VDEC_LOGH("pVDec:%p, return_es, hBD:%p\n", pVDec, hBD);
                     VDECLOGIFERR(pVDec->hCB(AMP_VDEC_EVENT_EMPTY_ES_DONE,
                             (UINT32) hBD, 0, pVDec->uiCBData));
                 } else {
@@ -6185,7 +6187,7 @@ static void decode_stream_process_msg(VDecoder *pVDec, MV_CC_MSG_t *pMsg) {
                 // Maybe need to come up with better solution in up layer API.
                 //
                 // If user want to cache, then cache in PAUSE.
-                VDEC_LOGH("%p:"BUFSTR" Receive BD %p in idle state.\n", pVDec, hBD);
+                VDEC_LOGH("%p:"BUFSTR" Receive BD %p in idle state, return_es\n", pVDec, hBD);
                 VDECLOGIFERR(pVDec->hCB(AMP_VDEC_EVENT_EMPTY_ES_DONE,
                     (UINT32) hBD, 0, pVDec->uiCBData))
             } else {
@@ -6245,7 +6247,7 @@ static void decode_stream_process_msg(VDecoder *pVDec, MV_CC_MSG_t *pMsg) {
             }
 
             if (VdecProcessBD(pVDec, hBD) == false || pBigDesc->uSize == 0) {
-                VDECPRT("%p:"BUFSTR"skip strm hBD=%p as no meminfo or size is 0",
+                VDEC_LOGH("%p:"BUFSTR"skip strm hBD=%p as no meminfo or size is 0, return_es\n",
                         pVDec, hBD);
                 VDECLOGIFERR(pVDec->hCB(AMP_VDEC_EVENT_EMPTY_ES_DONE,
                     (UINT32)hBD, 0, pVDec->uiCBData));
@@ -6258,7 +6260,7 @@ static void decode_stream_process_msg(VDecoder *pVDec, MV_CC_MSG_t *pMsg) {
                 // Maybe need to come up with better solution in up layer API.
                 //
                 // If user want to cache, then cache in PAUSE.
-                VDECPRT("%p:"BUFSTR" Receive BD %p in idle state.\n", pVDec, hBD);
+                VDEC_LOGH("%p:"BUFSTR" Receive BD %p in idle state, return_es\n", pVDec, hBD);
                 VDECLOGIFERR(pVDec->hCB(AMP_VDEC_EVENT_EMPTY_ES_DONE,
                     (UINT32) hBD, 0, pVDec->uiCBData))
             } else {
@@ -6475,7 +6477,6 @@ INT decode_stream_main_loop(VDecoder *pVDec) {
             SETSTATE(pVDec->eState, VDEC_STATE_WAIT_INPUT_BUFFER);
             return 0;
         }
-    VDECPRT("tony trace inside decode_stream_main_loop - 1. after VDEC_STATE_WAIT_INPUT_BUFFER \n", __LINE__);
         if (pVDec->uiDecodedIndex > 0) {
             // judge the display buffer number, in case the VDEC_EVENT_ALLOC_DIS_BUF event
             unsigned int uNum;
@@ -6485,24 +6486,20 @@ INT decode_stream_main_loop(VDecoder *pVDec) {
                 return 0;
             }
         }
-    VDECPRT("tony trace inside decode_stream_main_loop - 2. after VDEC_STATE_WAIT_OUTPUT_BUFFER \n", __LINE__);
 
         if (decode_video(pVDec) != SUCCESS)
             break;
-    VDECPRT("tony trace inside decode_stream_main_loop - 3. after decode_video \n", __LINE__);
         msg.m_MsgID = CMD_NONE;
         while (MV_CC_MsgQ_TryGetMsg(pVDec->hDecodeMsgQueue, &msg) == S_OK) {
             AMP_ASSERT(msg.m_MsgID != (UINT32) CMD_NONE);
             if (msg.m_MsgID == CMD_FREEZE) {
                 msg.m_Param2 = TRUE;
                 VDECLOGIFERR(MV_CC_MsgQ_PostMsg(pVDec->hDecodeMsgQueue, &msg));
-    VDECPRT("tony trace inside decode_stream_main_loop - 4. hDecodeMsgQueue \n", __LINE__);
                 return 0;
             }
             decode_stream_process_msg(pVDec, &msg);
             if (msg.m_MsgID == CMD_TERMINATE) {
                 VDECPRT("%p Exit Decode task\n", pVDec);
-    VDECPRT("tony trace inside decode_stream_main_loop : 5. CMD_TERMINATE proceeded \n", __LINE__);
                 return -1;
             }
             msg.m_MsgID = CMD_NONE;
@@ -6654,12 +6651,9 @@ VOID VDec_Decode_Task(VOID *hVDec) {
     VDECLOGIFERR(MV_Timer_CreateEx(&pVDec->hStatusLogTimer, pVDec->uiStatusLogPeriod * 1000,
                                    VideoStatusProcess, hVDec, "VideoStatusProcess"));
     VDECLOGIFERR(MV_Timer_Start(&pVDec->hStatusLogTimer));
-    pid_t tid = gettid();
     while (1) {
         msg.m_MsgID = CMD_NONE;
-        VDEC_LOGH("tony trace VDec comp event loop before(tid=%d) - tony_counter=%d\n", tid, ++tony_counter);
         MV_CC_MsgQ_GetMsg(pVDec->hDecodeMsgQueue, &msg);
-        VDEC_LOGH("tony trace VDec comp event loop after(msgID = %d(%s), (tid=%d)) - tony_counter=%d\n", msg.m_MsgID, msgtostr(msg.m_MsgID), tid, --tony_counter);
         AMP_ASSERT(msg.m_MsgID != (UINT32) CMD_NONE);
         if (msg.m_MsgID == CMD_FREEZE) {
             VDEC_LOGH("%p:receive freeze\n", pVDec);
@@ -6681,13 +6675,10 @@ VOID VDec_Decode_Task(VOID *hVDec) {
         if (bStreamFreeze == FALSE) {
             decode_stream_process_msg(pVDec, &msg);
 
-            VDEC_LOGH("tony trace before decode_stream_main_loop() state = %d\n", pVDec->eState);
             if (decode_stream_main_loop(pVDec) < 0) {
-                VDEC_LOGH("tony trace ERROR in  decode_stream_main_loop() state = %d\n", pVDec->eState);
                 VDEC_LOGH("%p:Exit Decode task\n", pVDec);
                 return;
             }
-            VDEC_LOGH("tony trace after decode_stream_main_loop() state = %d\n", pVDec->eState);
         }
     }
 }
diff --git a/amp/src/ddl/vcodec/comp_vdec/source/vdec_misc.c b/amp/src/ddl/vcodec/comp_vdec/source/vdec_misc.c
index 2f12854..81c68b3 100755
--- a/amp/src/ddl/vcodec/comp_vdec/source/vdec_misc.c
+++ b/amp/src/ddl/vcodec/comp_vdec/source/vdec_misc.c
@@ -66,6 +66,7 @@
 #define THRESH_FRAME_NUM                                3
 #define THRESH_B_FRAME_NUM                              20
 #define SEQUENCE_CHECK_COUNT                            4
+#define THRESH_ES_NUM                                   10
 
 HRESULT initThreshFrameCheck(VDecoder *pVDec) {
     VMETA_CBLOCK *pCblk = pVDec->pStrmCtrlBlock->pVir;
@@ -136,3 +137,30 @@ HRESULT updateThreshFrameCheck(VDecoder *pVDec, EVENT_CELL *pEventCell) {
 #endif
     return SUCCESS;
 }
+
+HRESULT updateStrmThreshFrameCheck(VDecoder *pVDec) {
+#ifdef DYNAMIC_THRESH
+    VMETA_CBLOCK *pCblk = pVDec->pStrmCtrlBlock->pVir;
+    UINT32 uTempThreshold = 0;
+    UINT32 uCurTiming = 0;
+
+    if (pVDec->uiLastFrameTime) {
+        uCurTiming = AMP_GetCurrentTimeMS() - pVDec->uiLastFrameTime;
+    }
+
+    if (uCurTiming > 40) {
+        if (pVDec->uiPushedStrmBufCount > THRESH_ES_NUM) {
+            uTempThreshold = pVDec->uNoDecStrmSize/pVDec->uiPushedStrmBufCount;
+            if (uTempThreshold < pCblk->uThreshFrameCheck) {
+                pCblk->uThreshFrameCheck = uTempThreshold;
+
+                VDECPRT("%p: update thresh: %d BDs (%d bytes) in HWVDEC, "
+                    "timing=%dms, uThreshFrameCheck=%d\n",
+                    pVDec, pVDec->uiPushedStrmBufCount, pVDec->uNoDecStrmSize,
+                    uCurTiming, pCblk->uThreshFrameCheck);
+            }
+        }
+    }
+#endif
+    return SUCCESS;
+}
diff --git a/amp/src/ddl/vcodec/comp_vdec/source/vdec_misc.h b/amp/src/ddl/vcodec/comp_vdec/source/vdec_misc.h
index 4221bbb..9183bc2 100644
--- a/amp/src/ddl/vcodec/comp_vdec/source/vdec_misc.h
+++ b/amp/src/ddl/vcodec/comp_vdec/source/vdec_misc.h
@@ -51,6 +51,7 @@
 HRESULT initThreshFrameCheck(VDecoder *pVDec);
 HRESULT updateBitRateThreshFrameCheck(VDecoder *pVDec, UINT32 bit_rate);
 HRESULT updateThreshFrameCheck(VDecoder *pVDec, EVENT_CELL *pEventCell);
+HRESULT updateStrmThreshFrameCheck(VDecoder *pVDec);
 
 
 #endif
AI2-100-vdec-1.patch (20,362 bytes)   
AI2-100-amp_wrapper-2.patch (1,932 bytes)   
diff --git a/amp_wrapper.c b/amp_wrapper.c
index 840e067..9249fad 100644
--- a/amp_wrapper.c
+++ b/amp_wrapper.c
@@ -882,6 +882,7 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
         amp_config._d = AMP_COMPONENT_VDEC;
         amp_config._u.pVDEC.mode = AMP_SECURE_TUNNEL;
         amp_config._u.pVDEC.uiType = v_codec;
+        amp_config._u.pVDEC.uiFlag = 1 << 9; // use frame-in mode
 /*  TODO : ??????
         if (amp_zapping_mgr.enable_nr) {
             amp_config._u.pVDEC.uiFlag |= 1 << 6;
@@ -1066,6 +1067,10 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
         output_config.eType = AMP_DMX_OUTPUT_VES;
         output_config.Tag = 0;
         output_config.uPid = v_pid;
+	output_config.uAlign = 2;
+	output_config.eESOutputMode = AMP_DMX_ES_OUTPUT_MODE_UNITSTART_ALIGN;
+	output_config.uBufSize = 8 * 1024 * 1024;
+	output_config.uBufPaddingSize = 2 * 1024 * 1024;
         socPlayerInfo->dmx_output_v.uiPortIdx = AMP_DMX_ANY_PORT_IDX;
         amp_log(socPlayerInfo->pip ? 1:0, "amp_create_pipeline_bottom_half 14 in, AVP_START");
         AMP_RPC(ret, AMP_DMX_AddChannel, socPlayerInfo->amp_dmx, &output_config, &socPlayerInfo->dmx_output_v);
@@ -1089,6 +1094,10 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
         output_config.eType = AMP_DMX_OUTPUT_AES;
         output_config.Tag = 0;
         output_config.uPid = a_pid;
+	output_config.uAlign = 2;
+	output_config.eESOutputMode = AMP_DMX_ES_OUTPUT_MODE_UNITSTART_ALIGN;
+	output_config.uBufSize = 1 * 1024 * 1024;
+	output_config.uBufPaddingSize = 16 * 1024;
         socPlayerInfo->dmx_output_a.uiPortIdx = AMP_DMX_ANY_PORT_IDX;
         amp_log(socPlayerInfo->pip ? 1:0, "amp_create_pipeline_bottom_half 17 in, AVP_START");
         AMP_RPC(ret, AMP_DMX_AddChannel, socPlayerInfo->amp_dmx, &output_config, &socPlayerInfo->dmx_output_a);
AI2-100-amp_wrapper-2.patch (1,932 bytes)   

(SW) Dean Chiang

2022-12-09 15:29

developer   ~0011446

Hi Sangmin,

Upload ok.
/release_by_fxn/swan_test_image/20221209_mantis1496

Thank you.
Dean Chiang

(ALTech) Sangmin Choi

2022-12-14 12:59

developer   ~0011480

Hi, Dean,

Could you please build a test firmware? SD and ND.

It's a little different from previous request.
Please check the followings carefully.

1. add following line to .repo/manifests/skb_prebuilts.xml
<project sync-c="true" sync-tags="false" remote="skb_prebuilts" revision="SKB_NEWRTSP_ATV_TEST" groups="skb_prebuilts" path="vendor/skb/prebuilts/skp_rtsp" name="skp_rtsp" />
You should run the repo init and repo sync again.
Please check vendor/skb/prebuilts/skp_rtsp is exist or not.

2. change the branch of vendor/skb/framework/btf
cd vendor/skb/framework/btf
git checkout -b TEST_SKB_RTSP_AI2 skb_bcf/TEST_SKB_RTSP_AI2

3. change the branch of vendor/skb/prebuilts/boot_config
cd vendor/skb/prebuilts/boot_config
git checkout -b TEST_SKB_RTSP_AI2 skb_prebuilts/TEST_SKB_RTSP_AI2

4. change the firmware version
cd vendor/skb/prebuilts/boot_config
echo 19.534.927 > version.txt

If you have any question, please let me know.

Thank you.

(SW) Jim Chen

2022-12-15 18:22

developer   ~0011498

Hi Sangmin,

test FW is on FTP /release_by_fxn/swan_test_image/20221215_mantis1496

(ALTech) Sangmin Choi

2023-01-06 14:39

developer   ~0011696

Hi, Dean,

Could you please build a test firmware after applied attached patches? SD only.
This firmware is based on 534 branches.

1. remove following commits
syna-release/ampsdk

99db43c congested vbi interrupt filtering (2)
8b0a6b7 congested vbi interrupt filtering
3da94a7 https://sc-debu-git.synaptics.com/gerrit/#/c/171604/2
01fc31b empty_bd_pool crash
893ee44 https://sc-debu-git.synaptics.com/gerrit/#/c/171604/
380a0c4 https://sc-debu-git.synaptics.com/gerrit/#/c/162747/

2. apply SKBSBLT-191.patch
vendor/synaptics/vsxxx

Thank you.
SKBSBLT-191.patch (3,513 bytes)   
diff --git a/interfaces/display/2.1/impl/handlers/BerlinVideoOutput.cpp b/interfaces/display/2.1/impl/handlers/BerlinVideoOutput.cpp
index 291c073..79abb9b 100644
--- a/interfaces/display/2.1/impl/handlers/BerlinVideoOutput.cpp
+++ b/interfaces/display/2.1/impl/handlers/BerlinVideoOutput.cpp
@@ -839,46 +839,46 @@ status_t BerlinVideoOutput::SetDisplayMode(VideoOutputType vout_type,
 				disp_handle_, AMP_DISP_TG_PRI,
 				resID, hdmi_vout_config_.bit_depth);
         AVS_CHECK(ret, "AMP_DISP_OUT_SetResolution");
-    }
-    //Vas add modified; River 2021/09/17
-
-    AMP_RPC(ret, AMP_DISP_OUT_HDMI_SetVidFmt,
-            disp_handle_,
-            hdmi_vout_config_.color_format,
-            hdmi_vout_config_.bit_depth,
-            hdmi_vout_config_.pixel_repetition);
-    AVS_CHECK(ret, "AMP_DISP_OUT_HDMI_SetVidFmt");
-
-    // only need to check SD resolution
-    if (display_mode.width <= 720) {
-        for (uint32_t i = 0; i < hdmi_sink_caps_.uiResCnt && i < 64; i++) {
-            if (hdmi_sink_caps_.ResInfo[i].ihActive == (int)display_mode.width &&
-                hdmi_sink_caps_.ResInfo[i].ivActive == (int)display_mode.height) {
-                aspect = hdmi_sink_caps_.ResInfo[i].iAspRatio;
-                break;
-            }
-        }
-
-        if (aspect == AMP_DISP_OUT_ASPECT_RATIO_4BY3 ||
-            aspect == AMP_DISP_OUT_ASPECT_RATIO_16BY9) {
-            // scaninfor unchanged, configure it to -1
-            AMP_RPC(ret, AMP_DISP_OUT_HDMI_SetVidInfo, disp_handle_, aspect, -1);
-            AVS_CHECK(ret, "AMP_DISP_OUT_HDMI_SetVidInfo");
-        }
-    }
-
-    // Reset HDR enable setting concern the new format support HDR
-    ResetHdrSettings();
-
-    if (notify) {
-        // Check if notify is required
-        // We have already notified observers if call from ApplySetting
-        value.setString(display_mode.ToString());
-        key = AVSettingsHelper::GetFullKey(marvell::kVideoOutputSettingsPrefix,
-                marvell::kHDMIDisplayMode);
-        av_settings_handle_->NotifyValue(key.string(), value);
-    }
-
+	//Vas add modified; River 2021/09/17
+
+	AMP_RPC(ret, AMP_DISP_OUT_HDMI_SetVidFmt,
+		disp_handle_,
+		hdmi_vout_config_.color_format,
+		hdmi_vout_config_.bit_depth,
+		hdmi_vout_config_.pixel_repetition);
+	AVS_CHECK(ret, "AMP_DISP_OUT_HDMI_SetVidFmt");
+
+	// only need to check SD resolution
+	if (display_mode.width <= 720) {
+	    for (uint32_t i = 0; i < hdmi_sink_caps_.uiResCnt && i < 64; i++) {
+		if (hdmi_sink_caps_.ResInfo[i].ihActive == (int)display_mode.width &&
+		    hdmi_sink_caps_.ResInfo[i].ivActive == (int)display_mode.height) {
+		    aspect = hdmi_sink_caps_.ResInfo[i].iAspRatio;
+		    break;
+		}
+	    }
+
+	    if (aspect == AMP_DISP_OUT_ASPECT_RATIO_4BY3 ||
+		aspect == AMP_DISP_OUT_ASPECT_RATIO_16BY9) {
+		// scaninfor unchanged, configure it to -1
+		AMP_RPC(ret, AMP_DISP_OUT_HDMI_SetVidInfo, disp_handle_, aspect, -1);
+		AVS_CHECK(ret, "AMP_DISP_OUT_HDMI_SetVidInfo");
+	    }
+	}
+
+	// Reset HDR enable setting concern the new format support HDR
+	ResetHdrSettings();
+	
+	if (notify) {
+	    // Check if notify is required
+	    // We have already notified observers if call from ApplySetting
+	    value.setString(display_mode.ToString());
+	    key = AVSettingsHelper::GetFullKey(marvell::kVideoOutputSettingsPrefix,
+					       marvell::kHDMIDisplayMode);
+	    av_settings_handle_->NotifyValue(key.string(), value);
+	}
+    }
+    
     AVS_FUNC_LEAVE
     return android::OK;
 
SKBSBLT-191.patch (3,513 bytes)   

(SW) Jim Chen

2023-01-06 19:32

developer   ~0011705

Hi Sangmin,
test FW is on FTP /release_by_fxn/swan_test_image/20230106_mantis1496

(ALTech) Sangmin Choi

2023-01-30 09:54

developer   ~0011867

Hi, Jim,

Could you please build a test firmware after applied attached patches? SD only.

This firmware is based on 534 branches.

syna-release/ampsdk
CSMSKBSBLT-201-Unmute-HDMI.patch

Thank you.
CSMSKBSBLT-201-Unmute-HDMI.patch (2,384 bytes)   
diff --git a/amp/src/aal/sound/sound_api.c b/amp/src/aal/sound/sound_api.c
index 27c374c..ac3b5dd 100755
--- a/amp/src/aal/sound/sound_api.c
+++ b/amp/src/aal/sound/sound_api.c
@@ -3067,6 +3067,7 @@ HRESULT AMP_SND_SetStreamVolumeIndB(AMP_IN HANDLE hStream, AMP_IN float fVolume)
     SND_STRM *pStream = 0;
     UINT32 uiVolume = 0;
     AMP_APP_PARAST stAppParam;
+    AMP_SOUND_DRIVER *pSndDrv = g_stSndDriver;
 
     SND_API_ENTER();
     SNDDRV_CHECKVALID();
@@ -3097,6 +3098,7 @@ HRESULT AMP_SND_SetStreamVolumeIndB(AMP_IN HANDLE hStream, AMP_IN float fVolume)
         (pStream->PeerPortConn.hInterHandle == SOUND_PORTID_PASSTHROUGH &&
         pStream->PeerPortConn.uiFlags == HDMI_PATH))
     {
+        MV_OSAL_Mutex_Lock(pSndDrv->hDrvMutex);
 #ifdef CONFIG_AMP_AUDIO_MUTE_PT_FOR_STREAM
         SNDLOGD("HDMI pass through case, stream volume is set to AOUT!\n");
         AMP_RPC(rc, AMP_SNDSINK_SetAoutStreamVolume, pStream->hSndSinkComp,
@@ -3109,6 +3111,11 @@ HRESULT AMP_SND_SetStreamVolumeIndB(AMP_IN HANDLE hStream, AMP_IN float fVolume)
 #if 1  //tony debug
         pStream->uiStreamVolume = uiVolume;
 #endif 
+        if( pStream->uiStreamVolume != 0 ){
+            AMP_RPC(rc, AMP_SNDSINK_SetAoutStreamVolume, pStream->hSndSinkComp, HDMI_PATH, 0x40000000L);
+        }
+        MV_OSAL_Mutex_Unlock(pSndDrv->hDrvMutex);
+
         return rc;
     }
 
@@ -3482,7 +3489,6 @@ HRESULT AMP_SND_SetStreamMute(AMP_IN HANDLE hStream, AMP_IN BOOL bMute)
     SNDSTRM_CHECKVALID(hStream);
     pStream = (SND_STRM *)hStream;
     stAppParam._d = AMP_APP_PARAIDX_VOLUME;
-
     
     if((pStream->PeerPortConn.ePeerType == AMP_PORT_AREN_OUT_SPDIF)||
         (pStream->PeerPortConn.hInterHandle == SOUND_PORTID_PASSTHROUGH &&
@@ -3530,6 +3536,7 @@ HRESULT AMP_SND_SetStreamMute(AMP_IN HANDLE hStream, AMP_IN BOOL bMute)
         (pStream->PeerPortConn.hInterHandle == SOUND_PORTID_PASSTHROUGH &&
         pStream->PeerPortConn.uiFlags == HDMI_PATH))
     {
+        MV_OSAL_Mutex_Lock(pSndDrv->hDrvMutex);
 #ifdef CONFIG_AMP_AUDIO_MUTE_PT_FOR_STREAM
         SNDLOGD("HDMI pass through case, stream volume is set to AOUT!\n");
 #if 1 //tony debug
@@ -3545,6 +3552,7 @@ HRESULT AMP_SND_SetStreamMute(AMP_IN HANDLE hStream, AMP_IN BOOL bMute)
                      hStream);
         }
 #endif
+        MV_OSAL_Mutex_Unlock(pSndDrv->hDrvMutex);
         return rc;
     }
 

(SW) Dean Chiang

2023-01-30 12:13

developer   ~0011877

Hi Sangmin,
upload to
/release_by_fxn/swan_test_image/20230130_mantis1496

Thank you
Dean Chiang

(ALTech) Sangmin Choi

2023-01-30 16:20

developer   ~0011882

Hello, Dean,

I'm sorry but could you please build a test image once again? SD only.
Recent source code has a problem which can't be played live and VOD.

Please build a test firmware based on ref_v534r27_D735.xml, and also applied the CSMSKBSBLT-201-Unmute-HDMI.patch.

Thank you.
Sangmin Choi.
ref_v534r27_D735.xml (156,946 bytes)   
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <remote name="skb" fetch="."/>
  <remote name="skb_bcf" fetch="ssh://git@bitbucket.skbroadband.com:7999/stbbcf"/>
  <remote name="skb_btv-res" fetch="ssh://git@bitbucket.skbroadband.com:7999/btv-ux"/>
  <remote name="skb_prebuilts" fetch="ssh://git@bitbucket.skbroadband.com:7999/stbpac"/>
  <remote name="soc-aml" fetch="ssh://git@bitbucket.skbroadband.com:7999/btfaml"/>
  <remote name="soc-syna" fetch="ssh://git@bitbucket.skbroadband.com:7999/soc-syna"/>
  <remote name="sptek-syna" fetch="ssh://git@bitbucket.skbroadband.com:7999/soc-syna"/>
  
  <default remote="skb" revision="BFX-UA300_5.3.4" sync-j="4"/>
  
  <project name="anypoint_adv" path="vendor/skb/prebuilts/anypoint_adv" remote="skb_prebuilts" revision="a29d6745789bfc6484fa74023571c1b2967a0265" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="apple_tvplus" path="vendor/skb/prebuilts/apple_tvplus" remote="skb_prebuilts" revision="56c195db8a12a8303b9c19a509331e87384aa4fc" upstream="release/common" dest-branch="release/common" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="boot_config" path="vendor/skb/prebuilts/boot_config" remote="skb_prebuilts" revision="0a39db6db321a0618551f675c7b5aa261e7ee563" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="boot_script" path="vendor/skb/prebuilts/boot_script" remote="skb_prebuilts" revision="8c8943d6b5225cc9e3938f7d299c7ae832aa3588" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="bootanimation" path="vendor/skb/prebuilts/bootanimation" remote="skb_prebuilts" revision="90008270b39733bd076a2e4248da6b901ebc72a4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="btf-prebuilts" path="vendor/skb/framework/btf" remote="skb_bcf" revision="e422b20b952f1dfb3814df54f1bfd2f68231d3d4" upstream="BTF_API_LEVEL_6" dest-branch="BTF_API_LEVEL_6" groups="skb_btf,testauto"/>
  <project name="btf-sepolicy" path="vendor/skb/framework/btf-sepolicy" remote="soc-syna" revision="42be954cbed605a865f55838868b5e7c5eed747b" upstream="BTF_API_LEVEL_6/bg5ct/android-10" dest-branch="BTF_API_LEVEL_6/bg5ct/android-10" groups="skb_btf"/>
  <project name="btv-hal-impl_bfx-ua300" path="vendor/synaptics/btv-hal-impl/bfx-ua300" remote="soc-syna" revision="8311e4f7851303d83467981421f263d0bb23cec0" upstream="BTF_API_LEVEL_6/bg5ct" dest-branch="BTF_API_LEVEL_6/bg5ct" groups="foxconn"/>
  <project name="btv-hal-impl_synaptics" path="vendor/synaptics/btv-hal-impl/synaptics" remote="soc-syna" revision="ab33103c5136c9770cb70190845a824d51e552b8" upstream="BTF_API_LEVEL_6/bg5ct/ua300" dest-branch="BTF_API_LEVEL_6/bg5ct/ua300" groups="synaptics"/>
  <project name="btv-stb-images-AI2MAX" path="vendor/skb/prebuilts/skb_btv-menu_image" remote="skb_btv-res" revision="aa097e1da415c37294679c932c5efe1585bfa3be" upstream="AI2MAX-5.3.4" dest-branch="AI2MAX-5.3.4" groups="skb_btv-res" sync-c="true" sync-tags="false"/>
  <project name="btv-stb-kids_guide" path="vendor/skb/prebuilts/skb_btv-kids_guide" remote="skb_btv-res" revision="67d73fd338aecc11a77baad01d11d5a2e51be694" upstream="KIDS-GUIDE_5.3.4" dest-branch="KIDS-GUIDE_5.3.4" groups="skb_btv-res" sync-c="true" sync-tags="false"/>
  <project name="debu-android-device-synaptics-sequoia" path="device/synaptics/sequoia" revision="57be06382cb463c47b19d6031c2b0f7048a1eea6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-android-device-synaptics-sequoia-kernel" path="device/synaptics/sequoia-kernel" revision="da723f5fab2e9ea6613933f9762f31d545b674a7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-android-vendor-imagination" path="vendor/imagination" revision="ad79e2f7ca3fb91cf896e4d88af78640c81e89fd" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-android-vendor-marvell" path="vendor/marvell" revision="b4c58be93ab7a21cde3032f7c7ca2d197247eba7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-android-vendor-synaptics-build" path="vendor/synaptics/build" revision="b675af8a4981a16d14f0494069d5e9efd88c02b6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-android-vendor-synaptics-common" path="vendor/synaptics/common" revision="9efce808bce9bfb55eaee51369752864f1f0c80c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-android-vendor-synaptics-external" path="vendor/synaptics/external" revision="af5ec221befb13beee3a28af88c28a8c12e62577" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-android-vendor-synaptics-overlays" path="vendor/synaptics/overlays" revision="8cc855831612b9a8264a6ea7dafe28c67c429afb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-android-vendor-synaptics-playready" path="vendor/synaptics/playready" revision="50966be7751f604a4132add1c78bbccb73a0bc51" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-android-vendor-synaptics-sequoia" path="vendor/synaptics/sequoia" revision="07397d799e9e875b1c8e90a7f40b2bc45a925f20" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-android-vendor-synaptics-sequoia-gtvs" path="vendor/synaptics/sequoia/gtvs" revision="d8dee560ed672cec7a0a8d93b7d987847285e72a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-android-vendor-synaptics-vsxxx" path="vendor/synaptics/vsxxx" revision="8eb6e0df76ef64fc4eb1fb43caa841cd0f03c242" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-android-vendor-synaptics-widevine" path="vendor/synaptics/widevine" revision="cddf1ce2860f99cd3643479f36dda926236be774" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release" path="syna-release" revision="9660154eda97b598d5d8cd972f127afc2eb72951" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-ampsdk" path="syna-release/ampsdk" revision="1d22ec4e5c49cd7c3a572dff3eef83ad8fe886d1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-ampsdk-amp-src-ddl-acodec-codec-codec_mpeg" path="syna-release/ampsdk/amp/src/ddl/acodec/codec/codec_mpeg" revision="afa64c4b81f2b7887106dc1439bd8132ce38d96b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-ampsdk-amp-src-ddl-acodec-codec-codec_wma" path="syna-release/ampsdk/amp/src/ddl/acodec/codec/codec_wma" revision="88e6b7342e415040f5ea5e48ba7db71fcd0409b0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-ampsdk-amp-src-ddl-acodec-codec-dts_parser" path="syna-release/ampsdk/amp/src/ddl/acodec/codec/dts_parser" revision="281cf8a3df7d715e964c3c6fa1b6ac09e755d134" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-ampsdk-amp-src-ddl-comp_dvs" path="syna-release/ampsdk/amp/src/ddl/comp_dvs" revision="48b674b378fb7bc5238f1f83016ef4af3a43693f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-ampsdk-drm-widevine" path="syna-release/ampsdk/drm/widevine" revision="464ca8ce13e89b35714863e5857b3d22a50aa327" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-application" path="syna-release/application" revision="af0ee0ee5b7328b95482c8e0045f17595fe0f355" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-boot" path="syna-release/boot" revision="4c6e68ed1c59fbef30af24e951fec05cff5ef7c1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-boot-preboot-prebuilts" path="syna-release/boot/preboot/prebuilts" revision="b8beb6248b731a48fed5d39ca7e4248ae9744158" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-build" path="syna-release/build" revision="7487c1cdbb479e04ae86d5597d801c198d1cbd8b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-configs" path="syna-release/configs" revision="d0575cae01ad07e66d1b19439abea99df4408113" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-drm" path="syna-release/drm" revision="6f514665aca4e933cccd2087ddafbce7b46001e8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-drm-pr_syna_ca" path="syna-release/drm/pr_syna_ca" revision="0a404aabe99a9adac0aad3673445b378b049db77" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-drm-pr_syna_ca-3x" path="syna-release/drm/pr_syna_ca/3x" revision="c1cc4d1fb82ec412135b966c5247af5d044e7f52" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-drm-pr_syna_ca-4x" path="syna-release/drm/pr_syna_ca/4x" revision="755ddad3bb76f7c39d0d50029327b45b2de13c01" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-external" path="syna-release/external" revision="0f26d29735e8ac99b1dd07c98dcab42a5b2b13fb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-factory" path="syna-release/factory" revision="cd43b6122314219e9b2b092dcfe48a549d67206e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-fw_enc" path="syna-release/fw_enc" revision="baea4b19c03abab5220581191da91049c3f25198" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-fw_enc-dts_hd" path="syna-release/fw_enc/dts_hd" revision="657d65edbc120688da8fcc6cecbe20c48e397f0e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-fw_enc-mp3" path="syna-release/fw_enc/mp3" revision="b1e744e67173befc8aa279a3091c371e6fc9b02c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-fw_enc-ms11" path="syna-release/fw_enc/ms11" revision="4f0f66b4ea6da5b1fdf8292e9c882cf99bbece8c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-fw_enc-neural" path="syna-release/fw_enc/neural" revision="b2513236cc412abdd3b96edef08b6cc602cfe7e2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-fw_enc-srs" path="syna-release/fw_enc/srs" revision="b728f5c072481598a6beb51e188eb198113cf972" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-linux_4_9_q" path="syna-release/linux_4_9_q" revision="121eb3276576a34fdfa590d218283d2c6c197659" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-osal" path="syna-release/osal" revision="11fb01d6cf01a70becf0a622f647a8a0a2d3da73" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-security" path="syna-release/security" revision="2a52ca4fedf2f31c921bd1d24308490136b5560c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-sysroot-android" path="syna-release/sysroot/android" revision="ce624e34d150f55e8e63ef08a8d237c1231483a4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-sysroot-linux-gtb" path="syna-release/sysroot/linux-gtb" revision="893f0c01ee25538c176f29eda65ad9d0cd80bd6a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-sysroot-linux-rootfs" path="syna-release/sysroot/linux-rootfs" revision="b382699d5efabd721cb2113d86f4698cbaa73e09" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-sysroot-linux-yocto" path="syna-release/sysroot/linux-yocto" revision="d902f6a579510fa49f0c56b9b57402acf7fe64f0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-sysroot-linux-yocto-72" path="syna-release/sysroot/linux-yocto-72" revision="0294cfe7aa91b32c8e99def976d353464a1b6973" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-ta_app" path="syna-release/ta_app" revision="101b32099379dc46bd4995897af56fd51336be8c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-ta_enc" path="syna-release/ta_enc" revision="fe449e5db1539dd62a61c8a2eb81672b7bdcdb7b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-ta_enc-dv" path="syna-release/ta_enc/dv" revision="e5b1502b17fc44b0c083de22e810e2c033330e36" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-ta_enc-libdtscore.ta" path="syna-release/ta_enc/libdtscore.ta" revision="9bb0ca3d0ddfe5dadb15ea0e41c74f514bf9427f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-ta_enc-libdtshd.ta" path="syna-release/ta_enc/libdtshd.ta" revision="107d84be469c00761a35b3dd6593c2873cc1d108" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-ta_enc-libsrstruvol.ta" path="syna-release/ta_enc/libsrstruvol.ta" revision="defd453def303fa8ef02042b200cead23c83d5e8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-ta_enc-libutctl.ta" path="syna-release/ta_enc/libutctl.ta" revision="61daf9a39de63af6c515aa9404bde217ddd585fd" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-ta_enc-libwatermark.ta" path="syna-release/ta_enc/libwatermark.ta" revision="51c4669bcc14bff0318347b6689adbc508749c16" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-ta_enc-libwma.ta" path="syna-release/ta_enc/libwma.ta" revision="9ba6329897ba54dfd52f1c0e2ac57a9bc0e9484c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-ta_enc-pr40" path="syna-release/ta_enc/pr40" revision="f6c65ee24fe0ae04f55f10c5402373516cbed4e5" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-ta_enc-wv15" path="syna-release/ta_enc/wv15" revision="7e2ce3d9774424102f608dfecdd35bd7fd91c874" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-tee" path="syna-release/tee" revision="a3a6117347ae11a72bab84cd3fbdd5e77bc9c383" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="debu-syna-release-toolchain" path="syna-release/toolchain" revision="abe9606da7cf381048ca0b3005cc81129065f163" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
  <project name="device-common" path="device/common" revision="9d2a0d0c3aab8b698669bad9810bc52ac7f76dfb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="device-generic-arm64" path="device/generic/arm64" revision="b2aea8576e3928e9add8b616740e56c1c5a811d2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="device-generic-armv7-a-neon" path="device/generic/armv7-a-neon" revision="4f543eb2e85a4b140d829ba5e186c895923f67fc" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="device-generic-car" path="device/generic/car" revision="f75a4ff4e6ae7d26049d12d35855102a9cad3dad" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="device-generic-common" path="device/generic/common" revision="fa38a0a6fa43fdf34b81d37c3acd7dc6ecbd1230" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="device-generic-goldfish" path="device/generic/goldfish" revision="de1c3f0f8b2d26225da6edcf628c958952c58c06" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="device-generic-goldfish-opengl" path="device/generic/goldfish-opengl" revision="c643dd7253df3731b927f5e35daaa9bf98393b43" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="device-generic-lionhead" path="device/generic/lionhead" revision="2632d2f2e3565494e2ee3668e93195dc7bba6128" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="device-generic-mini-emulator-arm64" path="device/generic/mini-emulator-arm64" revision="672958caf7187fb355149546d886bf5f556ba3e6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="device-generic-mini-emulator-armv7-a-neon" path="device/generic/mini-emulator-armv7-a-neon" revision="8c906010786b63d1549ea76e0dba2e0c0abc399b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="device-generic-mini-emulator-x86" path="device/generic/mini-emulator-x86" revision="dc0e1610a68c17e4aaf3a2b06bf18062e8e5e4d0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="device-generic-mini-emulator-x86_64" path="device/generic/mini-emulator-x86_64" revision="0e0dc9eefb1226163a215ac3bac16dedf15d88f9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="device-generic-opengl-transport" path="device/generic/opengl-transport" revision="b2e1e50337c4290e0e75c9aa7ba76eda7edf4e6d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="device-generic-qemu" path="device/generic/qemu" revision="698158b4e699ee4fc6395c200c0105b154d101ca" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="device-generic-trusty" path="device/generic/trusty" revision="620ea38a0a891db036d0104e9425b1489ed51a61" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="device-generic-uml" path="device/generic/uml" revision="6574b28ad7b947395c5770b9fdfc384904b305b8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="device-generic-x86" path="device/generic/x86" revision="7a73a1f8e9fd691cb8f45aa9de303f3c39c3837a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="device-generic-x86_64" path="device/generic/x86_64" revision="506952733fdebb5a2ef086b519ceebe86a95ae31" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="device-google-atv" path="device/google/atv" revision="3ec1bba5ac01384bbe3b6791c077b5cc76af50ea" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="device-google-contexthub" path="device/google/contexthub" revision="86028528d62951e8b323d0aba55a6e85563253a0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="device-google-cuttlefish" path="device/google/cuttlefish" revision="bbd7feea9acc14a88ef6c5349ef0470c7cdc122c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="device-google-cuttlefish_common" path="device/google/cuttlefish_common" revision="903ddd5aa56ce72ec774d2c361752546b652457b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="device-google-cuttlefish_kernel" path="device/google/cuttlefish_kernel" revision="d0d9709c5a19f5fd6cdfbec6aa4c100d5fd6e9e3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="device-google-cuttlefish_vmm" path="device/google/cuttlefish_vmm" revision="7bea9f0d8c30ca81cbf217fb25605de195b16631" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="device-google-vrservices" path="device/google/vrservices" revision="c4155c007bd2c32fc6ee70f9212ad800836cef3d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="device-linaro-hikey" path="device/linaro/hikey" revision="b27f1e3bac64f7c0ad7717185e9197e8d20f6b49" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="device-linaro-hikey-kernel" path="device/linaro/hikey-kernel" revision="aa2b4dd4f0abfb5771798050154d38ec6b14f21d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="device-sample" path="device/sample" revision="d64a03ec745d8e4085ae65a868f1e8d66b2d9c4c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="device-ti-beagle-x15" path="device/ti/beagle_x15" revision="084da5b58a1e6b9e5c9c77783eee412c1ecdfe1e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="device-ti-beagle-x15-kernel" path="device/ti/beagle_x15-kernel" revision="e6da95f21f0586fea0770a2e7146b37a25a3b317" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="digicap_btv-app" path="vendor/skb/prebuilts/digicap_btv-app" remote="skb_prebuilts" revision="f98d637aa377aeae2df7cd41bb51d783265bc39c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts,testauto" sync-c="true" sync-tags="false"/>
  <project name="digicap_google-ad-ui" path="vendor/skb/prebuilts/digicap_google-ad-ui" remote="skb_prebuilts" revision="34a1bdad37ce24081bf8d3378af475290d6b2ee3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="digicap_patch-ui" path="vendor/skb/prebuilts/digicap_patch-ui" remote="skb_prebuilts" revision="bb047df73a28439631d0d925b7646fedce996d33" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="digicap_screensaver" path="vendor/skb/prebuilts/digicap_screensaver" remote="skb_prebuilts" revision="c0dd7b793c2560f0bb6971c55443811cf105c614" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="digicap_zemkids" path="vendor/skb/prebuilts/digicap_zemkids" remote="skb_prebuilts" revision="2cbccfe1013f72f925b7c920afd70bbf44f57750" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="hal-interface" path="vendor/skb/framework/hal/interface" remote="skb_bcf" revision="7b34342fa26a01c86242bc7c25c1780a3802b9cf" upstream="BTF_API_LEVEL_6" dest-branch="BTF_API_LEVEL_6" groups="skb_btf"/>
  <project name="hal-testsuite" path="vendor/skb/framework/hal/testsuite" remote="skb_bcf" revision="f2fb57ca3d76ddefdebb7be662ca89f56c28039c" upstream="BTF_API_LEVEL_6" dest-branch="BTF_API_LEVEL_6" groups="skb_btf"/>
  <project name="kernel-configs" path="kernel/configs" revision="de0acd55a148e1f637ada24b9ec5a71f5b7877c1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="kernel-tests" path="kernel/tests" revision="eb91f7a42c2bcafba2d72cc4fc35a5ed18f12c4f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="pixtree_ads" path="vendor/skb/prebuilts/pixtree_ads" remote="skb_prebuilts" revision="a4dbe6d4c089d90be20483152f30600ac997bcbc" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="pixtree_mlr" path="vendor/skb/prebuilts/pixtree_mlr" remote="skb_prebuilts" revision="50f66015e9a87faf23a77edacfef3066b59ede70" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="pixtree_multiview" path="vendor/skb/prebuilts/pixtree_multiview" remote="skb_prebuilts" revision="b95d0072469d96ce4de487e020650aefc05396c4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="platform-art" path="art" revision="a3da03f27531d5455f462e61860c1ba70f16cf9f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-bionic" path="bionic" revision="06cec80ecf95eecfe86cc797382c6cca50d4bb56" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-bootable-recovery" path="bootable/recovery" revision="f4d4ed30cd70ac2fb5f4ed0094098b28fad5e8e3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-build" path="build/make" revision="ad6c5bcab96aa901a0b0c1b5ee998c08dca6bd05" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4">
    <copyfile src="core/root.mk" dest="Makefile"/>
    <linkfile src="CleanSpec.mk" dest="build/CleanSpec.mk"/>
    <linkfile src="buildspec.mk.default" dest="build/buildspec.mk.default"/>
    <linkfile src="core" dest="build/core"/>
    <linkfile src="envsetup.sh" dest="build/envsetup.sh"/>
    <linkfile src="target" dest="build/target"/>
    <linkfile src="tools" dest="build/tools"/>
  </project>
  <project name="platform-build-blueprint" path="build/blueprint" revision="12bcfa5e9b104e2fceaf6a5207af0f718b01d96a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-build-kati" path="build/kati" revision="7295712444f9e66fd0f52a298c1c39ccb0194ad4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-build-soong" path="build/soong" revision="3faec0d31b06e7ab69adc70e856ae8ce22dc2e2f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4">
    <linkfile src="root.bp" dest="Android.bp"/>
    <linkfile src="bootstrap.bash" dest="bootstrap.bash"/>
  </project>
  <project name="platform-compatibility-cdd" path="compatibility/cdd" revision="ea4ae2be066b0d4456d8e244191e336720ec2ad6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-cts" path="cts" revision="26858e4353f9c22a65545402af055913beddcdc9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-dalvik" path="dalvik" revision="9a1d3ec50905d5dabbd1ce393e5715df43cc3d1e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-developers-build" path="developers/build" revision="6e74514dfd0489fa1917f0bd11a012897a1b34f3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-development" path="development" revision="98f649d3eafc4c5c9c5bccc6cf7500d345405ed3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-aac" path="external/aac" revision="49735b01e00c4223f8ee1b958ba2ed8b2eb1d851" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-adeb" path="external/adeb" revision="2acddb3f946f381d4bfd5764e2a8e8263cce37fa" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-adhd" path="external/adhd" revision="068d7ff1228db05a89b69066f37816d76275fdf3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-android-clat" path="external/android-clat" revision="1ccc24ce260cf949ddb0bc6994c49723ac2ecf7b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-androidplot" path="external/androidplot" revision="b999712946d5141812fa2456e652db6b818d439e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-ant-glob" path="external/ant-glob" revision="45461635647e5481fa67473795782ce232e44fe1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-antlr" path="external/antlr" revision="f207c52043d762d9cfbfd87986b5194c855a318a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-apache-commons-bcel" path="external/apache-commons-bcel" revision="50e755197cd5de9d584414616d6d48877c92c649" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-apache-commons-compress" path="external/apache-commons-compress" revision="5334065cacdd3d1af2688d4617918ec0460708e1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-apache-commons-math" path="external/apache-commons-math" revision="f30081520947ace21933c4f6ade062152c9b99f3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-apache-harmony" path="external/apache-harmony" revision="b115c18dcfcc7433d89826f86a1f5889d3a6e37f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-apache-http" path="external/apache-http" revision="952e3cf27f86ef4e797ba76d0ee108aae3d132fe" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-apache-xml" path="external/apache-xml" revision="2e0b59453e964e77dc2a6e4e1ea13baf03f690e9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-archive-patcher" path="external/archive-patcher" revision="efcfb5be6f5eb4ae6b6cc755f997df055bc7b9ae" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-arm-optimized-routines" path="external/arm-optimized-routines" revision="0cb9739fdecbc11df2456807d8de81517b957a29" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-autotest" path="external/autotest" revision="b2010fc2ff94af33259503aa28daa6eb70ff4f2d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-avb" path="external/avb" revision="119251268c594d115a1eff31b3ec32108b88b593" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-bcc" path="external/bcc" revision="db83b156a85bf531c967adb00e649d55d7238dc7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-blktrace" path="external/blktrace" revision="9c82183ae7fb7dc4db787b8796c652a732b4d552" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-boringssl" path="external/boringssl" revision="98697a9a252a4146c61fbb86169b698d71da165d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-bouncycastle" path="external/bouncycastle" revision="0f3518b026db034e671ce404372db92de5d55cfd" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-brotli" path="external/brotli" revision="e1fc10a642a91c85afb8cba684b75421c53c2288" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-bsdiff" path="external/bsdiff" revision="79d0acf62e249d4d3b38cd41e5b47bdee336145a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-bzip2" path="external/bzip2" revision="1b9ad0911e00ef427383a47c908c1eba642e2728" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-caliper" path="external/caliper" revision="fed431afe2537c1d6c4930d58fe71ff0ca084c0b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-capstone" path="external/capstone" revision="f1f1cbc054db7021d4167a96b55783e087e1b7b4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-catch2" path="external/catch2" revision="bcfbb791d09e390fb545c03ca002e570f764d960" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-cblas" path="external/cblas" revision="61ee00692011385347a5dd1ad872556899a5cf7a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-chromium-libpac" path="external/chromium-libpac" revision="2dadcc1c644dd0659e70ff4a318bc6074f06df78" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-chromium-trace" path="external/chromium-trace" revision="f4e722b911fcc6f7164026432de62a02ea3460fb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-chromium-webview" path="external/chromium-webview" revision="5e34b35a24985062386376b8a85cd2576fe6067e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-clang" path="external/clang" revision="8343f599c9e1dda8e6c1bb779af323a673a052f9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-cldr" path="external/cldr" revision="1a85e3902da68636ec8ae978935ef144b7ac0840" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-cmockery" path="external/cmockery" revision="9199c7bfafefea32d1884182fa655b6e4578c1c4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-cn-cbor" path="external/cn-cbor" revision="d42fc3b49cda5c21aee74f0ec7bd06e1bcab8731" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-compiler-rt" path="external/compiler-rt" revision="570d57488d3e0dd5652b8482d63a1fdbe77d37cd" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-conscrypt" path="external/conscrypt" revision="292a0b54b8d32c092734f401c44bcc26b6bed9ac" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-crcalc" path="external/crcalc" revision="e4b2d03505a4f1b6ea42ba026fb05e996de6256b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-cros-system_api" path="external/cros/system_api" revision="38114471918da3af3eee5b26c4e1d7d93517af5b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-curl" path="external/curl" revision="c16c4b9bb9c38c8dbd9d5592ff9514a0b7a96283" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-dagger2" path="external/dagger2" revision="c4e59f861da9bac6beba095dad61a2443998c9dc" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-deqp" path="external/deqp" revision="9a91222da681fa09e277897cb335e7ab269742d8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-deqp-deps-glslang" path="external/deqp-deps/glslang" revision="91b452070b219d80a82d98deb46c1514dc67f4b8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-deqp-deps-spirv-headers" path="external/deqp-deps/SPIRV-Headers" revision="33de1aef825029c0cf7927a72df63ebe79745c6f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-deqp-deps-spirv-tools" path="external/deqp-deps/SPIRV-Tools" revision="2e6244127648ea760172bf07ecf687a59ee7bd17" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-desugar" path="external/desugar" revision="67a575a8a97e134bd90b9d3b7570816668fbf4b1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-dexmaker" path="external/dexmaker" revision="eb1081adb59449e3d280cad576f80ae226b027aa" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-dlmalloc" path="external/dlmalloc" revision="3a9d0af27a9f8fe533931a9e7ca843fd8e5b54f1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-dng_sdk" path="external/dng_sdk" revision="c285687bc4085efe72e6c09485f8b93dcee738a4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-dnsmasq" path="external/dnsmasq" revision="8e9578cd0779d081a1a56f575bc631a11a426a41" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-doclava" path="external/doclava" revision="60c1a9f10eab6a82d53ef4db65525b5bfe12de62" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-dokka" path="external/dokka" revision="68f88bd53a3ca988de051469b6b5bc6f383d83a3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-drm_hwcomposer" path="external/drm_hwcomposer" revision="482ad9a71e6667bc291a7900bf174a92cfab775d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-droiddriver" path="external/droiddriver" revision="b0838843e019a232f9a439f895a658f58a369bd0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-drrickorang" path="external/drrickorang" revision="8f0f838b123a0e6cd05b1db06f20d1e50d8389c8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-dtc" path="external/dtc" revision="74c10f3bbd651db07a40609b085f785b470d9bb2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-dynamic_depth" path="external/dynamic_depth" revision="ba6dbda80afea23fcb1e996dcf0dfb7b39283144" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-e2fsprogs" path="external/e2fsprogs" revision="47e3eb9aeacca10d8f77dea2ac8c6e7aee36c338" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-easymock" path="external/easymock" revision="afd503b419c6c25d6804e137f2642217f10ee980" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-eigen" path="external/eigen" revision="cf47824652b817dd4f12e81e4e0ba33225e46777" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-elfutils" path="external/elfutils" revision="76a46f02a97f7d0d8ee334e1fbdb981757a7f50c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-emma" path="external/emma" revision="c2aa4d22fc24295761a9c588836531a7b3d3d519" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-epid-sdk" path="external/epid-sdk" revision="7d6a6b63582f241b4ae4248bab416277ed659968" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-error_prone" path="external/error_prone" revision="293052176003db358872bc7391b0522b7a90b6d1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-expat" path="external/expat" revision="992f142ff0a49c63fdbc54d4a71f6b51a3ddc7d7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-f2fs-tools" path="external/f2fs-tools" revision="6225390356ca09449da9d65d0306b1f43099fa62" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-fdlibm" path="external/fdlibm" revision="3eea558350ee7509b210f3bfa91bb9f318121e31" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-fec" path="external/fec" revision="7049b92008752b4f939425ad91bf2aea86133216" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-flac" path="external/flac" revision="5751895771522cda77630a59274c33cffcc2f476" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-flatbuffers" path="external/flatbuffers" revision="24a2547fa55ca4aeb243021ba8ce72099b9b4c6b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-fonttools" path="external/fonttools" revision="3573c3e336f800513596dce38d86abf12ddb25df" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-freetype" path="external/freetype" revision="3d18aea62aad363102c7e6520fec0c0d2b15794f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-fsck_msdos" path="external/fsck_msdos" revision="909cef0d8e47dcedd5a88bc2b66fb242e3e772cb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-fsverity-utils" path="external/fsverity-utils" revision="9851db065823f9fbb109fb4990323cd468da940c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-gemmlowp" path="external/gemmlowp" revision="18d2e95977453f4c06f999efe21301f5844fafa9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-gflags" path="external/gflags" revision="0ff6b6b12c67175a1573050e2ded5f7951b989ea" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-giflib" path="external/giflib" revision="341c85ed68d932afcdd4481d361d9c1e65b453e2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-glide" path="external/glide" revision="bd0082947a4c7b0058049c155d3c2517d462cc81" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-golang-protobuf" path="external/golang-protobuf" revision="f41fad3594ed04ed21267e8b9070098a092ffcf3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-google-benchmark" path="external/google-benchmark" revision="91c277079ad177b9ce43a45e8848560d9c8570cd" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-google-breakpad" path="external/google-breakpad" revision="05728773737deb58a10cdbe29750152c13e400bf" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-google-fonts-arbutus-slab" path="external/google-fonts/arbutus-slab" revision="6a62a3a7283256e86faac4b4830e224f64946838" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-google-fonts-arvo" path="external/google-fonts/arvo" revision="bca8c9b2d370ba24ac0280d674b063f647a038bd" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-google-fonts-carrois-gothic-sc" path="external/google-fonts/carrois-gothic-sc" revision="344f772c902ad9f1097f74ee86540e13e6a0a047" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-google-fonts-coming-soon" path="external/google-fonts/coming-soon" revision="6528b7c529714c6982f547844c2c6ae7330be425" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-google-fonts-cutive-mono" path="external/google-fonts/cutive-mono" revision="32d5199d69463d2bec5d744ce76e38d756d8edeb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-google-fonts-dancing-script" path="external/google-fonts/dancing-script" revision="23b7015fb197f99ab9833b4dd29ada3886fede6d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-google-fonts-lato" path="external/google-fonts/lato" revision="139c627f77933688eeda9c16a575c1421af08808" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-google-fonts-rubik" path="external/google-fonts/rubik" revision="4a650db6c054b9b328eb1364d217a82296143d25" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-google-fonts-source-sans-pro" path="external/google-fonts/source-sans-pro" revision="ea1024073315464fc4ce2c5c0fccaf2ace8e18ac" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-google-fonts-zilla-slab" path="external/google-fonts/zilla-slab" revision="11c07b19edec7867860296950b14cf7b687240bd" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-google-fruit" path="external/google-fruit" revision="002c22e5f2dc9030d0b414a4fce547d9e30e0644" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-google-styleguide" path="external/google-styleguide" revision="749f7ae008c0d2dd9767fdfe202e6873e864a956" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-googletest" path="external/googletest" revision="c871e1df34e148591dcb7a45684cfaa561d09771" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-gptfdisk" path="external/gptfdisk" revision="43858e637cab22aa51e4e5c5ce4fea6dca72fb39" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-grpc-grpc" path="external/grpc-grpc" revision="e0b52d97439eeb05d8ae81cfb9ff5599d35c2ac9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-grpc-grpc-java" path="external/grpc-grpc-java" revision="9b4f1a6db99b7cb7d46320e25e32317853b500dc" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-guava" path="external/guava" revision="6501bf9c8011e09d21905a4cf263d6f5625d1465" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-guice" path="external/guice" revision="0cb6b120e56be5ac654ef6bc0a9bf1d71905193f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-hamcrest" path="external/hamcrest" revision="3d96516e09640e606da166e1dff54fb65c9a3a35" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-harfbuzz_ng" path="external/harfbuzz_ng" revision="5c6da22b1751b83076979c8d16f48054a7c58b19" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-honggfuzz" path="external/honggfuzz" revision="b7bc4c1a1a355ba5f92bd70520eb2af461324a14" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-hyphenation-patterns" path="external/hyphenation-patterns" revision="e5b0bea19621cc2467eca1d7ccbaf2b69f667862" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-icu" path="external/icu" revision="b46524157b29229c3a363f36b338523f4cbd66d4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-image_io" path="external/image_io" revision="135f7c04ae98ce694efcfc6d9a0d2bc38f4c3653" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-imagemagick" path="external/ImageMagick" revision="99ea11c1088f282342625d806885715ce0c8414e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-ims" path="external/ims" revision="fe28bba97c0754b1fa057a55609ec86c7ccb1d24" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-iperf3" path="external/iperf3" revision="43306ae1c85a53d3efeb20bff0e11cb7377df2c0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-iproute2" path="external/iproute2" revision="305dbada90d693b92f060b535941cceb38803fe1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-ipsec-tools" path="external/ipsec-tools" revision="21841d18260f3247c0189c5157169c862632f0ec" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-iptables" path="external/iptables" revision="6938ab6bbf9d67c78f4221a866624ea3a8fdd38e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-iputils" path="external/iputils" revision="2c7b625904073fc96ab12e78a4ee6901c266f1d5" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-iw" path="external/iw" revision="4b78b765daf510d829d5f84f70ec059a82fad312" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-jacoco" path="external/jacoco" revision="93068ff728a7916816e7bbf832b05c717a106c26" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-jarjar" path="external/jarjar" revision="86f27246919d505829a3ccb4f021fe05d182edc1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-javaparser" path="external/javaparser" revision="070ce799991ca3fb534c78ea92bc3d901baf992e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-javapoet" path="external/javapoet" revision="5110124a043357890d3e39b8452b0f0d4f2434d5" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-javasqlite" path="external/javasqlite" revision="c093f72b18ff45bd66c8884ef667399aa5891b9f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-jcommander" path="external/jcommander" revision="c4d97985b3787276d6b391510250246c9ca94541" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-jdiff" path="external/jdiff" revision="833bb881bfdaa26f1148cc670c1bc374237a9126" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-jemalloc" path="external/jemalloc" revision="e3ff6769f8262841c98245e21b96dc67536759dc" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-jemalloc_new" path="external/jemalloc_new" revision="c10a6b7597eee4f1fa0319d1d7444efe7ef1d8a6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-jline" path="external/jline" revision="478835d3c4603b43c28feb80912ff33f2c6811a6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-jsilver" path="external/jsilver" revision="241cd1b197ee8e520aa6b04f277c3b29a2ff0fe4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-jsmn" path="external/jsmn" revision="0ffcf7ec931258475f9585b808f45f1b388bfb80" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-jsoncpp" path="external/jsoncpp" revision="ef504fb429de168304bd227f421848adc0d8f325" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-jsr305" path="external/jsr305" revision="7b129a25432c1a1a3d1919499d8e2f583c753b8d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-jsr330" path="external/jsr330" revision="4221d13d2c4079d3299c1d3265ed93564b84c78b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-junit" path="external/junit" revision="b9c79460f7b94f7ec96a899cb60f46e44b78cce4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-junit-params" path="external/junit-params" revision="ed4bc1eedea9e248f690ed682e4bd1b65863268d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-kernel-headers" path="external/kernel-headers" revision="05215268d71368ebeab8238a512124cda35491a7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-kmod" path="external/kmod" revision="a373f23216120dfa63ec6613ec99639880e35505" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-kotlinc" path="external/kotlinc" revision="4f7a87e483094e0819bafc63e9f8ef3a93c26a03" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-ksoap2" path="external/ksoap2" revision="6f08c590bd21f8cf228b71b1423f010cad243b06" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libaom" path="external/libaom" revision="927836483141500bff866cfd6492245318cc0550" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libavc" path="external/libavc" revision="fff822b732ebc20d913ea3cebe8808490b5fc4ba" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libbackup" path="external/libbackup" revision="be853756f8a215492b11ae545206d12b64d3a03c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libbrillo" path="external/libbrillo" revision="d4a88f4821ed402c6515d3cf5442a90c95c529e6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libcap" path="external/libcap" revision="2db20a0a41de7cf42cc78f4c8a9b0ef2ed47f6b7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libcap-ng" path="external/libcap-ng" revision="e17ed85e2a3b4691efd6975a02f8e56277cc93af" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libchrome" path="external/libchrome" revision="adc5c3d79d629fdb7e95ba1d05fe5195df11a116" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libcups" path="external/libcups" revision="19ed2a257fd7dfe5cee729712b6abd76e82dd0b3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libcxx" path="external/libcxx" revision="29cbbe6156a5092438597c6b81a9ef55ef8d2949" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libcxxabi" path="external/libcxxabi" revision="a13dc9a5c69d05d8f285b0ab52e7b1ebadf4dc50" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libdaemon" path="external/libdaemon" revision="433dd14cb58a66737e158ad1331c02162a80f43f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libdivsufsort" path="external/libdivsufsort" revision="abb3a16c4986c5f7dda62580c4f53c1930d4d1b9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libdrm" path="external/libdrm" revision="2493ca265742b83a11531856451849ccf8c27f9f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libese" path="external/libese" revision="6b796cbcd37992280254d8aadc0134ac2e2a12f8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libevent" path="external/libevent" revision="7b67f806735671bbf49cc4cd74c59c7c105ce8e2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libexif" path="external/libexif" revision="385b3070c1483306fa4c9df74310ec98ad9a4e9c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libffi" path="external/libffi" revision="699c661a0b644dff59fc4731f937b1d60719d5c8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libgsm" path="external/libgsm" revision="1321c574befc82fd21a8ac38d36e1da1f3ffb336" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libhevc" path="external/libhevc" revision="6de7a93a5bde1a274eb1862aaaf515c1c5c57a7f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libjpeg-turbo" path="external/libjpeg-turbo" revision="94a6b62bcb956bc4bf669945bd11eee9ee1e6551" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libkmsxx" path="external/libkmsxx" revision="7fa58fa14436676f36c62bead0471c2e367d0af0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libldac" path="external/libldac" revision="93195ee38bd08ea8d9f87cbfa550635923f213de" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libmpeg2" path="external/libmpeg2" revision="89fdf58ed9b7abaa6379ec81a674f150a4a3aa89" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libmtp" path="external/libmtp" revision="cbe00e33b0314fdcf19b967ecbbaf294ed7701b7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libnetfilter_conntrack" path="external/libnetfilter_conntrack" revision="a44a0c25fa5eb2575df464bd4d9e3e5c7da9ccf6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libnfnetlink" path="external/libnfnetlink" revision="ac537e1d43625a99d8b266a362f4735762a42b66" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libnl" path="external/libnl" revision="173d924eceaa33fe7f731dfc692dd1e1cace80f3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libogg" path="external/libogg" revision="d03fa44a8b3a0e94ec336c73025914eb515c9265" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libopus" path="external/libopus" revision="fcc38fd8cc63302c151a33819701075cd4cc9f6f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libpcap" path="external/libpcap" revision="1974a6a92997523e1347f939a87ceb7c8339dd90" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libphonenumber" path="external/libphonenumber" revision="085c5ca0523fb92ddbf690e4423b9b6e00d943c4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libpng" path="external/libpng" revision="5aff8307d1e1b29edb289ba676233df51436dfc6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libprotobuf-mutator" path="external/libprotobuf-mutator" revision="19b7bf3edcedaea88dff58cc0d0bd595846a9db5" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libtextclassifier" path="external/libtextclassifier" revision="55a7382bc003e2d8cc7c989fa44d15dc3da319a7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libunwind" path="external/libunwind" revision="689a2af196d2de66803f91dd224e423252d7f171" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libunwind_llvm" path="external/libunwind_llvm" revision="6352e01a22119b918b6bc30e5882b5a6f81cff80" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libusb" path="external/libusb" revision="e486a629e38d567d271f38f50deeccdac6b7fc62" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libusb-compat" path="external/libusb-compat" revision="c9943b468b27de46dc8a039d8e9973f442af0b8b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libutf" path="external/libutf" revision="608c8fc0c45bcfefa6b6e48d5ecff190ed87a96a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libvpx" path="external/libvpx" revision="fff265b1dbc63f28c367f01a920ed7e6166e6eef" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libvterm" path="external/libvterm" revision="2caab416f758b648c4034e9f22cb7b76c37203f0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libxaac" path="external/libxaac" revision="d098d22eeb073bbc2bd917c4472248b464bb9a91" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libxcam" path="external/libxcam" revision="ecea4993be3fdd0bb18255484158104e7a0268a0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libxkbcommon" path="external/libxkbcommon" revision="c74616faf095670759d130f9856c3ac3f0f639aa" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libxml2" path="external/libxml2" revision="e040d79711a7aabe472b9be796d57d4ef9006a19" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-libyuv" path="external/libyuv" revision="2db5718acece211b3d42a90e52a2cb49078011a3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-linux-kselftest" path="external/linux-kselftest" revision="9d6eccd1c0bac7c5ac1e61a44e9a649d60be9441" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-llvm" path="external/llvm" revision="9b8d82b598b6242eeec9c35fe696727e9769feac" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-lmfit" path="external/lmfit" revision="3d36ea54c2216475d5e21da31ee0db4af24ebed1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-ltp" path="external/ltp" revision="644dde483817f788df920f08fe587cd4b1efd92c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-lua" path="external/lua" revision="2574da328caa748be2497afb33bf47fe2f078c55" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-lz4" path="external/lz4" revision="4a2a1bbe1b0f7a75aa7b5decbb84bd7fd7463c98" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-lzma" path="external/lzma" revision="ef4369024dfe3778f0350c23117a352f9e8792ea" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-markdown" path="external/markdown" revision="41a03193095447f4ff110690171574ed8b721292" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-mdnsresponder" path="external/mdnsresponder" revision="ef76ab62ad22ba6c589e47099550dc3da0e803c9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-mesa3d" path="external/mesa3d" revision="63d88d3b2dde7db2ae0ff382fe5d9fde1358740e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-microsoft-gsl" path="external/Microsoft-GSL" revision="d4e54c121f49d73c9e18aff087ce3dbafc2eab47" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-minigbm" path="external/minigbm" revision="676623b06ff2ccf44f5b859d091e5281235af628" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-minijail" path="external/minijail" revision="47c0fe93a41d0388c1f7a84de850820ec7326674" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-mksh" path="external/mksh" revision="e10ab3670da4b5b7d69f425d7b603cb1195e2f45" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-mockftpserver" path="external/mockftpserver" revision="1f487440520b7264f9134079441bce0adcf05af0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-mockito" path="external/mockito" revision="48fe6754c6d2c693310aa2c8667c9e232c152c1a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-mockwebserver" path="external/mockwebserver" revision="fd6ec7942c7b35516528cc90cc569cc274b001a6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-modp_b64" path="external/modp_b64" revision="4b8457442799a0134f80b91d8dc4a888a3526d44" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-mp4parser" path="external/mp4parser" revision="91052b1c78aaf57b0db28a0b1e4f7b91e5d8fda6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-mtpd" path="external/mtpd" revision="ca7860c5d1284f84e77ad850441b8bb00d1f4625" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-nanohttpd" path="external/nanohttpd" revision="9e6fdd3de9cf7ebc3a16c614147a28e63e62485e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-nanopb-c" path="external/nanopb-c" revision="872074ccde1d0da259e276d38eb052d2cd051408" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-naver-fonts" path="external/naver-fonts" revision="37ba854a88b1721057585111c7a1d7e5fd02b556" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-neon_2_sse" path="external/neon_2_sse" revision="7dff91633c4faf01e78427a0d1626853d96289ab" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-neven" path="external/neven" revision="a1182cb5e3ed263807e0c2233725874819411bce" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-newfs_msdos" path="external/newfs_msdos" revision="6cbd5a634d77914c907cdc00b5bb9fdb1fbc438d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-nfacct" path="external/nfacct" revision="da41b2d4c2089f96a7fcb81a8b686046e635da7d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-nist-pkits" path="external/nist-pkits" revision="5b6f1ee982bad06f7ba334df5b0584a59deba7b3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-nist-sip" path="external/nist-sip" revision="d0a7687d3a0fff06ea6c1fe7d11cbff9864beb99" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-noto-fonts" path="external/noto-fonts" revision="cc5b6cd30dd72c6337c94b897f293429881d46e2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-oauth" path="external/oauth" revision="2f79a0fdace446afd17a6b539b391be92214fd47" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-objenesis" path="external/objenesis" revision="a9381064619cdd7671f6e1200c3a7b9ecae3f8de" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-oj-libjdwp" path="external/oj-libjdwp" revision="e5c6f9d3821110df3781a8e9efbdada1305ab6b7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-okhttp" path="external/okhttp" revision="c74e7275c41141c75c863aeb514453307ef0cfe4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-one-true-awk" path="external/one-true-awk" revision="c1208415a3a2629b462f1826bc9a25d0bbbdbfdf" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-opencensus-java" path="external/opencensus-java" revision="610a17c2139830070c0dc56540d35aeb64222ec7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-openssh" path="external/openssh" revision="b89310140157cfdbdc10f1b6583d10777e0f7159" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-owasp-sanitizer" path="external/owasp/sanitizer" revision="9690b9149ee4acb478242eac4c176e09b226e6a6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-parameter-framework" path="external/parameter-framework" revision="a20e7087eaa8d95ff82f1777f0c21a836608fc57" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-pcre" path="external/pcre" revision="9bfe4731e753c5e605a03889a25564b889648762" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-pdfium" path="external/pdfium" revision="e0719dae86e45f46c78258828851881c90f54261" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-perf_data_converter" path="external/perf_data_converter" revision="f4ff85768cb3cd10d112939c358eee479f09dd00" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-perfetto" path="external/perfetto" revision="c4161c4aa879b8169685efcc6d3775e88ccc0a1b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-piex" path="external/piex" revision="266dae4948aa714201a4fec8cf1e04400a30a65e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-ply" path="external/ply" revision="86d9e5d12a18f1e9ee822944646ee11e5937ea6f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-ppp" path="external/ppp" revision="3ea5ca1afa0c45eb6bddd9a4937bc37f79f3d2cb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-proguard" path="external/proguard" revision="4049237427905fe053ec217c082ce222f9edc814" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-protobuf" path="external/protobuf" revision="10b0fd4a65a5cb1688336e6d988d20229102c88f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-protobuf-javalite" path="external/protobuf-javalite" revision="8f2ef780c041a8feed10b426eb954c2ff35c119e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-puffin" path="external/puffin" revision="bc7745523aef2d7f620ca16aa6ab11a8e38dc60e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-apitools" path="external/python/apitools" revision="9f2c4cc1426aacb15897099a6af9df82f399c112" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-appdirs" path="external/python/appdirs" revision="f26193e797c3f8f98aaa7e4afd555d2140b3fcb8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-asn1crypto" path="external/python/asn1crypto" revision="1208f0f8b78755298ebb98a9f4ce5ef76814c708" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-atomicwrites" path="external/python/atomicwrites" revision="be4fa9eb05f3e640647e30454b6f1c2625c34811" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-attrs" path="external/python/attrs" revision="9c3e89fa82d47246ab9b257d202726da133de5b2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-cachetools" path="external/python/cachetools" revision="0377d4b9d25a15e2cc4284730a551a42b7a10d22" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-cffi" path="external/python/cffi" revision="99013222844839c42437f16eace25f4e6a8a8b20" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-cpython2" path="external/python/cpython2" revision="fa37090dcba250d84c5aa7541ad37a598eecdc97" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-cpython3" path="external/python/cpython3" revision="3ef6c80ca3672b9b92dadb3a2e7314adb8fd9d66" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-cryptography" path="external/python/cryptography" revision="d45069b23a8e6d21df64d5b6f2553a7aa7ef9886" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-dateutil" path="external/python/dateutil" revision="d0da7aa65f2f29c46325bfb511aaa98790da47d3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-dill" path="external/python/dill" revision="1de25625afbfa39196b4873a3aa45f09a076a97a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-enum" path="external/python/enum" revision="9e4d9c3502331544e9d02205ab3b8df3e19f1c71" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-enum34" path="external/python/enum34" revision="51c247c15b53879958ccd94a95c403dd2a129da9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-funcsigs" path="external/python/funcsigs" revision="4f1c377691d5ea3ea7725e35bb106083a5274071" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-future" path="external/python/future" revision="b785374c2b816d432e9936782e2b214b192c73fe" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-futures" path="external/python/futures" revision="89a8fe6ab75db54c27ab073acda54b57b3a1187b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-gapic-google-cloud-pubsub-v1" path="external/python/gapic-google-cloud-pubsub-v1" revision="de91f91b3e0e8cd36ade69e16b831712e8181b5e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-google-api-python-client" path="external/python/google-api-python-client" revision="0d55ba86bf4bfdb1fdf4513e8801405a9fe8ae4c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-google-auth" path="external/python/google-auth" revision="d812ee31b10e88762eac9aeded408702e69280df" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-google-auth-httplib2" path="external/python/google-auth-httplib2" revision="f83658f8b9f7efd85af695bfdac0f00eeacfc5ed" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-google-cloud-core" path="external/python/google-cloud-core" revision="fb31d0b0d90ce27047c575c7cf7bd187d9df36e4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-google-cloud-pubsub" path="external/python/google-cloud-pubsub" revision="0d91fcf1c53d49055575bfde7c6eb24f345c307b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-google-gax" path="external/python/google-gax" revision="6654a7907460eeed423c35577b1ebdce0b94991e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-googleapis" path="external/python/googleapis" revision="48ac1fcf49fb23895e9eaa1514e3799a4e3cc6a9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-grpc-google-iam-v1" path="external/python/grpc-google-iam-v1" revision="9bd66e8ca00804a0432ffeddc50d8a552daae05e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-grpcio" path="external/python/grpcio" revision="cac720b2a4a33f52bafbe652639ae1d368be74a2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-httplib2" path="external/python/httplib2" revision="2f4eea998dae784f2c66396a73d525ba3f53bfb0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-matplotlib" path="external/python/matplotlib" revision="19ad7ac700c9cf081418aa10ea5fa9c66a6b6973" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-mock" path="external/python/mock" revision="3a5218fcb8133b8d17a197b4fcd6c63bd11341d6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-more-itertools" path="external/python/more-itertools" revision="f408bc183266f6b74c973549c9d0155d44ffda36" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-numpy" path="external/python/numpy" revision="111b7e10af77635c85bbbea1d0d35a649dc45ae1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-oauth2client" path="external/python/oauth2client" revision="942e7726e2387c58f04cad67ea76bb1cd1378af8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-olefile" path="external/python/olefile" revision="4b57860bf2c6d6eeb560d84adb20a09e3119d4d5" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-packaging" path="external/python/packaging" revision="b16fb277554ec5eb8e2fb2f9e7fedf95c60355de" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-parse" path="external/python/parse" revision="3e6bd0ef0c68250e04efab06e3d8bac9a723a79a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-pillow" path="external/python/Pillow" revision="90ec1d6e7ee5c236f62e0a374a7065657ed3c15c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-pluggy" path="external/python/pluggy" revision="476c801f6efdea24faab8e234c8802ae3f6cb1dc" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-ply" path="external/python/ply" revision="a06f18c56dfe3148c43ec4ed712bba663923516d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-proto-google-cloud-pubsub-v1" path="external/python/proto-google-cloud-pubsub-v1" revision="61035093eedea6edd613d98cfc64de2edcc42824" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-protobuf" path="external/python/protobuf" revision="16d0b123e41dc05cb82bd5d7e7194e37ecca5684" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-py" path="external/python/py" revision="bdf459ce1c2c467574869af67ad3c245fea6c031" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-pyasn1" path="external/python/pyasn1" revision="e04e2eb56045b29b920620c9d1f2f50e542aad09" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-pyasn1-modules" path="external/python/pyasn1-modules" revision="60293cd065c65befce9f3ab51a9ee5be4b6adae7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-pycparser" path="external/python/pycparser" revision="775e41a49bd0233ed94f379fd99b5a5837e257b2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-pyopenssl" path="external/python/pyopenssl" revision="3d7e6f31c43fe50e1147b4cfa49fd365a71295cb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-pyparsing" path="external/python/pyparsing" revision="bf90b1fc3425729cb5768af5182a83edfeb7ba2b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-pytest" path="external/python/pytest" revision="b3cd64044963b2b0eabaf60b7bd01a47e8395d29" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-requests" path="external/python/requests" revision="11d7236da2593f0908774fd027b175f4ff3e19fa" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-rsa" path="external/python/rsa" revision="ed5cd82fc8cb4f98aafeeaad550860132c27234a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-scipy" path="external/python/scipy" revision="921f53db519df603fe9ff681a49dd18be838febf" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-setuptools" path="external/python/setuptools" revision="513ec3d6bb6f7786d02caf51720497a118b8f4be" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-six" path="external/python/six" revision="1544229cbc0b2936d0eb01b282cd901c8827e0a9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-python-uritemplates" path="external/python/uritemplates" revision="7fed8f862ab03ae9240a222a45215b4b6930467e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-rapidjson" path="external/rapidjson" revision="908d461a0bb20eafba2a2c4c0f1003d9c9ab188a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-rappor" path="external/rappor" revision="24abc025df68928ce97749b18521c4dbfa3faaf7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-reactive-extensions-rxcpp" path="external/Reactive-Extensions/RxCpp" revision="fc1046c15d9830f24db7d5b20420a7bf884c1a4a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-replicaisland" path="external/replicaisland" revision="f9d0bb69baae6a0c386e94d8c93372de3d3278c6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-rmi4utils" path="external/rmi4utils" revision="eab13882ca581b5ef579eeeca311957f5fa2eada" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-robolectric" path="external/robolectric" revision="1c247020a97732c8ed951964a41c727f0d9f16f0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-robolectric-shadows" path="external/robolectric-shadows" revision="6361005e0e3c3190f479e57b29f7ad52fdbca95b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-roboto-fonts" path="external/roboto-fonts" revision="dd67dd85255323c0e363d84ac3fc5da45981eae3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-rootdev" path="external/rootdev" revision="2b38487945c95283b77047a5470aa750af02f847" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-scapy" path="external/scapy" revision="2c6d26c6fc374a6b26b012ff4523a24e903d8329" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-scrypt" path="external/scrypt" revision="d6114db148b1ededd120de0cf2d1fc73ba1611ac" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-seccomp-tests" path="external/seccomp-tests" revision="2795191f28591534096193bf5a92124367786b88" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-selinux" path="external/selinux" revision="d4c9dbc74e2358126387303d2c8ac3d4cb08b19e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-setupcompat" path="external/setupcompat" revision="c96823b9f70d1a305a1a140121e46ade83256b3a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-setupdesign" path="external/setupdesign" revision="2c496eae34f532f86bfbbe4c2558da06e23db511" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-sfntly" path="external/sfntly" revision="6bef7e4b4133b6ff3c2993a22aba17f3d59da5dc" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-shaderc-spirv-headers" path="external/shaderc/spirv-headers" revision="93474b8b1e381924a3f35c047b911400bbe7d65a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-shflags" path="external/shflags" revision="6d6812d19da2747fdbee25421af1bd3583d75bf0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-skia" path="external/skia" revision="e32c6a4f32581b03cafb260b7235f1d9b2d952ba" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-sl4a" path="external/sl4a" revision="ac701c2a59f1963c0de480796885f4fe381d376d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-slf4j" path="external/slf4j" revision="4cd3f35de15e9270f3d5822c3f04a7c2b02189ea" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-smali" path="external/smali" revision="22f98607fe36e57e17485821998a70b5886c0de6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-snakeyaml" path="external/snakeyaml" revision="5df2ff5ed7c5eebfaff21a8299019e21f648b0f6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-sonic" path="external/sonic" revision="043398f5c456fc78cd8f5f2057e3a2e767eebfca" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-sonivox" path="external/sonivox" revision="4bfcc221f03d1a00a7a79ff614f90e41ed72a286" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-speex" path="external/speex" revision="fb97af103ba6e0af885a306d1bd014dd9a6f9234" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-spirv-llvm" path="external/spirv-llvm" revision="f32dfe34b9cd7ae79520171b6f6e2f8d855eecb3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-sqlite" path="external/sqlite" revision="98f9a84e93fc0fb31980625387262ebcb452cfb3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-squashfs-tools" path="external/squashfs-tools" revision="26929f59a759b06cb01c539ba45630958a8e3a76" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-strace" path="external/strace" revision="f1cb53780e02e7a9112b4aa53a132cae53a1fa15" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-stressapptest" path="external/stressapptest" revision="4d151d9e70555f617bd5c8859d9b3857be31fde3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-subsampling-scale-image-view" path="external/subsampling-scale-image-view" revision="59fe3cb90269ed94757d37c02c7112fa6e9f78da" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-swiftshader" path="external/swiftshader" revision="308325006f3515492419bfbf12c30976a1b70493" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-syzkaller" path="external/syzkaller" revision="5ea79ae1c00598c57cc8706a4881c93507e6ba0c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-tagsoup" path="external/tagsoup" revision="5e9211080364ad4d30c5b97cf95ce825b740672a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-tcpdump" path="external/tcpdump" revision="f50b8b00f4d40eaaeb7e0e3a398d441d27e63d54" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-tensorflow" path="external/tensorflow" revision="b582373a688a4f93d5a58d66aeffa023d2954154" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-testng" path="external/testng" revision="74aac3e648e789b5f462bd42debc34a16507dbad" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-tinyalsa" path="external/tinyalsa" revision="e84b02b2bfca1b51f743ad262ca0b62504d6c6b3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-tinycompress" path="external/tinycompress" revision="4c77b6dd5f07c87b32a89b67e013fc4825d93685" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-tinyxml" path="external/tinyxml" revision="47a414e46f824c3d3d91c163db8c0e7fcb3dc8c6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-tinyxml2" path="external/tinyxml2" revision="14b323f3dee3d562b31bc6d0044e7dedbd2201b8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-toybox" path="external/toybox" revision="1e03c6d85f97833b61c5d7a9e28e835e695e9042" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-tremolo" path="external/tremolo" revision="ecb66da593feea3dca865adfa9ec3763fecbff7d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-turbine" path="external/turbine" revision="bf6b7ecbccfacab31b6961987f72e8d7e5d668b7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-u-boot" path="external/u-boot" revision="d90d5a69f9b7dc299bbefb74f4bafb43a1534a36" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-ukey2" path="external/ukey2" revision="cd9c844bd676ff9ff69a74bc49e157149a7f0918" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-unicode" path="external/unicode" revision="2cb210027e5cc5e631d1eb6f2907c4fbd8ba9527" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-v4l2_codec2" path="external/v4l2_codec2" revision="e7a24dbf9c98a7a391fa107725b4cc28b427cb37" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-v8" path="external/v8" revision="b4616666ca983583970b7dd2e30065d19f67a9a2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-vboot_reference" path="external/vboot_reference" revision="df6d6b6e5280520b096fb1f565b758948bc872ee" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-virglrenderer" path="external/virglrenderer" revision="59f85c99c1d1c7db8ca543288e12507a11f7cc20" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-vixl" path="external/vixl" revision="b6f42c3fa351cfd086f3bb6d4e91c6a7b3946dfa" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-vogar" path="external/vogar" revision="830acd878a1be63095bf710fecdd8d22f4f8449b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-volley" path="external/volley" revision="727b980e6d97b7cbbc61b987106315c7b68527f4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-vulkan-headers" path="external/vulkan-headers" revision="e11ab4647e4eb4d29987011cd2a3e3226fc45e29" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-vulkan-validation-layers" path="external/vulkan-validation-layers" revision="932fa4323a1a4147fc0df55f120dbce86554ab2c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-walt" path="external/walt" revision="a391e66652451cae0fe2ab840892a522c1fe1bbd" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-wayland" path="external/wayland" revision="138d7eae1ca3a0551510476a72990ab32fa8d0bd" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-wayland-protocols" path="external/wayland-protocols" revision="c7f2a3e1857c3fea7808e9c693c920bdbe38c777" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-webp" path="external/webp" revision="0d4066cc8c442d65cfb7c70f9ab484545f813949" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-webrtc" path="external/webrtc" revision="cf0ffc92d1efdaaacf7e2c8045af754463e34813" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-wpa_supplicant_8" path="external/wpa_supplicant_8" revision="8e45b33c8d444fda1bec60d3f9ca13107a0ea017" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-wycheproof" path="external/wycheproof" revision="9fe3e8708733ac26153048a03b1b0f83a206ea51" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-xmp_toolkit" path="external/xmp_toolkit" revision="44d7e4d00ef6da63a75bf3a4f9296872cc4d2ac1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-xz-embedded" path="external/xz-embedded" revision="51923a98b0af813e3db6a027d64471ee8710a4f2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-xz-java" path="external/xz-java" revision="bd7892bb8927360cd34805bc332039154a2110e0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-yapf" path="external/yapf" revision="45d923c40605a71867d174abcd04a1db76945651" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-zlib" path="external/zlib" revision="661c183e19d3a6848a046f1db973f5725c7f2204" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-zopfli" path="external/zopfli" revision="cf98102ba44eb494f53fc59b3fc59565e4015403" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-external-zxing" path="external/zxing" revision="65193280855e46d11bf5b44f1a7e49ec0c7bd57e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-av" path="frameworks/av" revision="b0b90ece8e450e8bdb3b288280135d47e24e550c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-base" path="frameworks/base" revision="2d9fc2c5c266134727bef0973b244194d00cc2ab" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-compile-libbcc" path="frameworks/compile/libbcc" revision="fca09e63fc6a0b8ed94b4f5b23081201220f29b4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-compile-mclinker" path="frameworks/compile/mclinker" revision="2ac86b5c4b9404666252c40980e645a9e2a73477" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-compile-slang" path="frameworks/compile/slang" revision="da9e9f979be20e805aee2f06a0bd82887d90c85a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-ex" path="frameworks/ex" revision="4bbf496bb9b79ca7ac0a09f004c56a5b40aa2b22" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-hardware-interfaces" path="frameworks/hardware/interfaces" revision="1dd754a602594dace31a6a2045bc8e6f3bdcd1ca" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-layoutlib" path="frameworks/layoutlib" revision="e7178efb3ecd791282f16859885f10c0daeb5a81" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-minikin" path="frameworks/minikin" revision="c431df69e615cc818edc3fb157d0eb9151258bea" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-ml" path="frameworks/ml" revision="b0b9cdc9f59ff0d4df5dfb70bccf64aab727cf4a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-multidex" path="frameworks/multidex" revision="745fa74857d2833e4d2dc3b0d6ab6e6cb6ff25f2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-native" path="frameworks/native" revision="98e958aa7304c23ab9d5884a7aebe01ca0057624" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-opt-bitmap" path="frameworks/opt/bitmap" revision="e9850af1278e499e427d08dbf40244f3622bd6db" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-opt-calendar" path="frameworks/opt/calendar" revision="1aea8315ebe9cca6e9462ab02e9f4caf20c8cd58" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-opt-car-services" path="frameworks/opt/car/services" revision="91d4b8c2bbc5718637500524c48b6b94fecdaf41" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-opt-car-setupwizard" path="frameworks/opt/car/setupwizard" revision="962a30f834b8e6f060b6bfc1b05d08c972d0b59b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-opt-chips" path="frameworks/opt/chips" revision="81994513f7ca38d4b0c150d3afe71fbd2d2a1859" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-opt-colorpicker" path="frameworks/opt/colorpicker" revision="c5a2e747f97ef2456c6f3dc008ae00f759407a23" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-opt-datetimepicker" path="frameworks/opt/datetimepicker" revision="0cc1bd33ef04e91ed63d36f843a34c2141c319c3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-opt-net-ethernet" path="frameworks/opt/net/ethernet" revision="7282d58109a5ae4bf9e9d7223171af5617ec99e7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-opt-net-ike" path="frameworks/opt/net/ike" revision="c0736f6c497f1682a654a8bc1d72ff506afea72e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-opt-net-ims" path="frameworks/opt/net/ims" revision="f1c2a9b68a2debdc5f47693876f2b1a7f3d7ee8e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-opt-net-voip" path="frameworks/opt/net/voip" revision="9c0eb14158b923fff523c4e60b103dbcf6bf44ac" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-opt-net-wifi" path="frameworks/opt/net/wifi" revision="480579609774b770930a9ff7ebd03d567d9316f6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-opt-photoviewer" path="frameworks/opt/photoviewer" revision="f90e5abc27d5c6694baabfd908ac36ef2dc11f1a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-opt-setupwizard" path="frameworks/opt/setupwizard" revision="13aa8a5c41ab3453c89c9948a9b7e8b1303f12be" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-opt-telephony" path="frameworks/opt/telephony" revision="927e335389c9156cc34ee2b8aa9910ebd4f7e8d2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-opt-timezonepicker" path="frameworks/opt/timezonepicker" revision="4534b444443c8b9d4a19290471ea5b485f05789e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-opt-vcard" path="frameworks/opt/vcard" revision="5e88fd3aaadf7d2a54d1fbb7e03004775801750f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-rs" path="frameworks/rs" revision="9822b047aa4423932fa8dd9ace11cdf16d309d3b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-frameworks-wilhelm" path="frameworks/wilhelm" revision="1ddc48b76a494bb1a346db3ac21ee9a10f4fe24f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-broadcom-libbt" path="hardware/broadcom/libbt" revision="23f3a6e8adb289dfa609903126697ca6c4990120" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-broadcom-wlan" path="hardware/broadcom/wlan" revision="71f18dd0868c4871f01d0bb17f9ba05129d1163b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-google-apf" path="hardware/google/apf" revision="7c5d43915046b2d1af8930ae772c291ea28baac3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-google-av" path="hardware/google/av" revision="2575735843e3d43a6f40e6c99968582ac42ed668" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-google-easel" path="hardware/google/easel" revision="fb72d9d16252ed63d9e1aa3465101ff19ac440a3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-google-interfaces" path="hardware/google/interfaces" revision="c9e0aa4bec53caebdaa8d24abd934edd16db6271" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-interfaces" path="hardware/interfaces" revision="97c7f887477ae16d63a0d8fc2c523825a1ddb214" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-invensense" path="hardware/invensense" revision="a51c32c7d16d32462fcd2d3fc61474bb0ec56864" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-libhardware" path="hardware/libhardware" revision="da60173e142c7bd919d4bd5ad113a2ed9f93e3ba" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-libhardware_legacy" path="hardware/libhardware_legacy" revision="86d26ee18d5de516f1a48046164c9e84408a7cce" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-nxp-nfc" path="hardware/nxp/nfc" revision="947e0ba5d5f49cfd178357cf0808053ce5c45ec6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-nxp-secure_element" path="hardware/nxp/secure_element" revision="313a6535990bd70a4cfc65d8b2bf8b40372b0920" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-qcom-audio" path="hardware/qcom/audio" revision="7c9cdb7c03a2d8d0809263923de60d6086113afe" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-qcom-bootctrl" path="hardware/qcom/bootctrl" revision="aaa8a9b93d685990b6c328aec76027bbad305de8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-qcom-bt" path="hardware/qcom/bt" revision="6de1929161c4898b95a8b298bd3c9403fbbf00e2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-qcom-camera" path="hardware/qcom/camera" revision="e0642e95ed62f9270098aa548f58b05eb9eb7ae9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-qcom-data-ipacfg-mgr" path="hardware/qcom/data/ipacfg-mgr" revision="644ce1d7415430f775f99cfe2aa0ab3ad4090071" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-qcom-display" path="hardware/qcom/display" revision="3ade6ee7aa9b2555307d57f9ac80cf993ca84a58" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-qcom-gps" path="hardware/qcom/gps" revision="8525477f971ca33b56225813ad15e760cb3d1381" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-qcom-keymaster" path="hardware/qcom/keymaster" revision="ecfe142948adf4f82083d7333b6c778f3993842b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-qcom-media" path="hardware/qcom/media" revision="3dbbe8f2863bca8ad38d3a7aa74aec0e62c092f2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-qcom-msm8960" path="hardware/qcom/msm8960" revision="c25a431842a26b5756b58a9d4a42c776e0457ba2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-qcom-msm8994" path="hardware/qcom/msm8994" revision="8e0383f6f41a2c49461f381c8d066ea21b20c674" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-qcom-msm8996" path="hardware/qcom/msm8996" revision="f0e7ce67121940312eaffeda9c4add56d63bf4e1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-qcom-msm8998" path="hardware/qcom/msm8998" revision="47c6b775f99eec47a1be15d7ad36a4d2db4cbadf" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-qcom-msm8x26" path="hardware/qcom/msm8x26" revision="85c1a5282ae28663335e55ce96a4c0487de6c578" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-qcom-msm8x27" path="hardware/qcom/msm8x27" revision="8ff5c0057cbdecfa09410c1710ba043e191a2862" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-qcom-msm8x84" path="hardware/qcom/msm8x84" revision="582b414269d8472d17eef65d8a8965aa8105042f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-qcom-power" path="hardware/qcom/power" revision="c9165f0cb184fcaf6888b7921b55033e8b50836c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-qcom-wlan" path="hardware/qcom/wlan" revision="bdf118c219179889f269d784eada3667176f4ec8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-realtek" path="hardware/realtek" revision="3f7eb327198f1627d89d97b08724a9c81a4f8fc7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-ril" path="hardware/ril" revision="2cf186902037b85470713ef32d1d138ae8fce7c2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-st-nfc" path="hardware/st/nfc" revision="8efba78c1246d4b2ee5e00baca33d5126682e37b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-st-secure_element" path="hardware/st/secure_element" revision="85f476304d5458ca16c38965e3e5d8492994bdfc" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-hardware-ti-am57x" path="hardware/ti/am57x" revision="90270170724d81013825feeac8f80fd89595388c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-libcore" path="libcore" revision="cd77f25ebb1261cfc3ef0d31d0635a896a130169" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-libnativehelper" path="libnativehelper" revision="bcc2b6fda49e42add4715882231215b2b3ada9d0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-basicsmsreceiver" path="packages/apps/BasicSmsReceiver" revision="12456bdb267f8837b6ca3bd4439b59820a981930" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-bluetooth" path="packages/apps/Bluetooth" revision="94366d501daefe1d24157540cb9bfc54d24cfec3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-browser2" path="packages/apps/Browser2" revision="37652f79d1a115bc2d920a68ad6846a23107c660" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-calendar" path="packages/apps/Calendar" revision="1938ad4fc2cba17bedfdb7f55760cd8132b27de3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-camera2" path="packages/apps/Camera2" revision="f7232d71b864e700da0c9a476ee03a26a1e50d3c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-car-dialer" path="packages/apps/Car/Dialer" revision="5a81748b107f070fab44dc593d81aafc805393b5" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-car-externallibs" path="packages/apps/Car/externallibs" revision="bc16257053938c32c75d502cd990b4fec5a76be8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-car-hvac" path="packages/apps/Car/Hvac" revision="68e29d345111c559fd46ac371a50a9ca6469fbde" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-car-latinime" path="packages/apps/Car/LatinIME" revision="11ce053ccc26b7f16084c8864b1a262490085593" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-car-launcher" path="packages/apps/Car/Launcher" revision="36c1f0f497682ea40cf9c954f094a5cb0b431d04" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-car-lenspicker" path="packages/apps/Car/LensPicker" revision="6f7aca1a5191ddbbf647f50d23fb9cd34addc913" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-car-libs" path="packages/apps/Car/libs" revision="8cc0cd1f258ecb5e731e3c8935616b468047f009" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-car-linkviewer" path="packages/apps/Car/LinkViewer" revision="a20936c7060b100857f8594a84c15e51da55176a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-car-localmediaplayer" path="packages/apps/Car/LocalMediaPlayer" revision="650c10e72bc13a845f3c00c56a2b39fa90680965" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-car-media" path="packages/apps/Car/Media" revision="d520ec1d352dbaacbc503ff61d2dbc52ade178ba" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-car-messenger" path="packages/apps/Car/Messenger" revision="96d067c203ea1344c4b0d202743908587fb53009" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-car-notification" path="packages/apps/Car/Notification" revision="86d11e52d3387040ef5ef07215c6dd6a43d62f23" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-car-overview" path="packages/apps/Car/Overview" revision="645ca82c123da80a1dfd48cff978fe92a73816b3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-car-radio" path="packages/apps/Car/Radio" revision="83f2221d92175434a75adf1cb0b19517b598eaa2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-car-settings" path="packages/apps/Car/Settings" revision="8fe0e42a6262403b68591bca3082516933d84cf8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-car-stream" path="packages/apps/Car/Stream" revision="37abfd98677d0dedcc286c61900b3db2da9fe6bc" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-car-systemupdater" path="packages/apps/Car/SystemUpdater" revision="eda0afb194279e86d41087e8f2984fee0655e03c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-carrierconfig" path="packages/apps/CarrierConfig" revision="95074ecc6a05a86848bc8a9d3b8b03b2186ada43" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-cellbroadcastreceiver" path="packages/apps/CellBroadcastReceiver" revision="3646b8b0d83eeb2774baec93c6ee74518f30dc77" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-certinstaller" path="packages/apps/CertInstaller" revision="062594ed9f25d0208a7add7b9fc537adbd051c89" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-contacts" path="packages/apps/Contacts" revision="8a5c8a01e0a50eb8f78a82ddec5100df7ed81c23" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-deskclock" path="packages/apps/DeskClock" revision="f4a34dbb153f3790317e7c5ca61b95d2585e52ba" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-devcamera" path="packages/apps/DevCamera" revision="ac0c3f959d31b22df03ad8fc9c5c35425c3f4dd3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-dialer" path="packages/apps/Dialer" revision="05552cb09dc243995e304dcb86e9b486312953c2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-documentsui" path="packages/apps/DocumentsUI" revision="8e2637f303eca3f1a2da0bf59b208d67a760b986" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-email" path="packages/apps/Email" revision="2f553852c217821d620d19c24511f55f84ce6230" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-emergencyinfo" path="packages/apps/EmergencyInfo" revision="c6fe4e6483308733da59c3dd628df08aa70011d1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-gallery" path="packages/apps/Gallery" revision="93d4b5a37c96052cfc22ecefd2bf1e0ae48d49cc" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-gallery2" path="packages/apps/Gallery2" revision="aa3033352235c276d3df5e9eacad2a5a0c626517" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-htmlviewer" path="packages/apps/HTMLViewer" revision="ba5580e4e1ac8f9f3eb1eb6338e43716ad0a70b1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-keychain" path="packages/apps/KeyChain" revision="885bc291249cb764c499ad0b5ebd32ce015d74ac" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-launcher3" path="packages/apps/Launcher3" revision="a7d3ec81c553a1d2e58be32b5a6f4807012cd677" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-legacycamera" path="packages/apps/LegacyCamera" revision="f01f73e6d950f8c2cce04cc6f0404a4cb17fa7bd" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-managedprovisioning" path="packages/apps/ManagedProvisioning" revision="3e77d4a07cff7ae760868b63f05d69cde33f6ca3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-messaging" path="packages/apps/Messaging" revision="30ca4742926f8f7e2468ee451b4c71df918b6877" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-music" path="packages/apps/Music" revision="a1f1c511703838aef7656a75ef41022d2d3c5105" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-musicfx" path="packages/apps/MusicFX" revision="161a6f2ae4bdfde1a469bdf5e66db4bbff770671" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-nfc" path="packages/apps/Nfc" revision="dc56ccfa797c213b82bde569d7aab2b767d3f631" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-onetimeinitializer" path="packages/apps/OneTimeInitializer" revision="737b0d2daabf33a458ed754e045b2f0e2b65da70" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-packageinstaller" path="packages/apps/PermissionController" revision="61b9cfdf2758ec289d6907d098df4a3277f8114f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-phonecommon" path="packages/apps/PhoneCommon" revision="bb3f2ba6bc3ce1e273394ec5c715fb693b53d344" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-protips" path="packages/apps/Protips" revision="277f2db1a9099d5aaf96d4f3ca8daaeeeeef4e6f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-provision" path="packages/apps/Provision" revision="d3aaf77c58a5886c113f88a99c6aa8f2b7873107" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-quicksearchbox" path="packages/apps/QuickSearchBox" revision="afefb469ba1de266f594827dbd92b8d5c642395e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-safetyregulatoryinfo" path="packages/apps/SafetyRegulatoryInfo" revision="8e051158d0eede62da5e56b3dad30fecb2767821" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-samplelocationattribution" path="packages/apps/SampleLocationAttribution" revision="01809642e1c7214d936c0d35301b355fe6dbfdf0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-secureelement" path="packages/apps/SecureElement" revision="4bd2e8512223f81bdea1afef1de4ccced39a62fc" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-settings" path="packages/apps/Settings" revision="7e594dfb86382fc527b015f05b789303fb17a23b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-settingsintelligence" path="packages/apps/SettingsIntelligence" revision="c725f6eb67081599d68bc915b72604b350b86ad1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-soundrecorder" path="packages/apps/SoundRecorder" revision="52d1ce17a0c18fe990a80da98c61399363d1ed7c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-spareparts" path="packages/apps/SpareParts" revision="f3d46ceeecd71c5555939f32643c18c78ae7909f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-stk" path="packages/apps/Stk" revision="f76f0524319c40c3639c7a2fdd2c995144876322" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-storagemanager" path="packages/apps/StorageManager" revision="daddd18fda1200dbc769729fde834e90a8bef91b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-tag" path="packages/apps/Tag" revision="40fddd7aa57ca28842d8781c19ba9c08f1de662a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-terminal" path="packages/apps/Terminal" revision="4d4e9490fdd512668ac0d47764f3eeb19504a6d2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-test-connectivity" path="packages/apps/Test/connectivity" revision="0be3e6ffd8451b1bf03ba7a6bdb78e8247c960ba" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-themepicker" path="packages/apps/ThemePicker" revision="322c5298f4d682dfd7c56a44ba79a7b74638322c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-timezonedata" path="packages/apps/TimeZoneData" revision="52bff87fa8f9413d81d8af0d258fa4ea209f84ec" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-timezoneupdater" path="packages/apps/TimeZoneUpdater" revision="106fb74251c2f00cfe07ff3357153cb1d9954ec2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-traceur" path="packages/apps/Traceur" revision="e8009abf2e6c4a8ea4e216649e51ccfd2d9cd306" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-tv" path="packages/apps/TV" revision="28bd9f8c4e624455fbdce86f75820c0d4c9d5fe5" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-tvsettings" path="packages/apps/TvSettings" revision="a6efc84dbe81ee68be4bd5fb69ceb5a844cf1d26" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-unifiedemail" path="packages/apps/UnifiedEmail" revision="b2161491d87d7a32f18278a4c2b92549d70f8965" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-wallpaperpicker" path="packages/apps/WallpaperPicker" revision="f1e69b45bde30a055d37260012df8e951bebf491" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-apps-wallpaperpicker2" path="packages/apps/WallpaperPicker2" revision="6bcea19e3667832f65e1b8afe4ede8152ea124fd" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-inputmethods-latinime" path="packages/inputmethods/LatinIME" revision="922b0778c9c6363ac9363560ff00bdb0975d18e5" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-modules-captiveportallogin" path="packages/modules/CaptivePortalLogin" revision="fe62b3b494c5203d5447efcf9a3c4ac8b8ee0afd" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-modules-extservices" path="packages/modules/ExtServices" revision="bf7f3d0025fcdcfa9ff557caf21ab8b20dc1fe04" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-modules-modulemetadata" path="packages/modules/ModuleMetadata" revision="bf198f3182e53f3d1dc9d061f558656e59f5d4c8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-modules-networkpermissionconfig" path="packages/modules/NetworkPermissionConfig" revision="e853abe00d4b6906eee05082659fc958cbed3147" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-modules-networkstack" path="packages/modules/NetworkStack" revision="44647f52ff0cfb7bf220fd4d774430a00e6499aa" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-providers-applicationsprovider" path="packages/providers/ApplicationsProvider" revision="33d26f5eedb3d3011762ce5b2de66e931bf64b35" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-providers-blockednumberprovider" path="packages/providers/BlockedNumberProvider" revision="b573d1c96b0d84210a183dd3c0a1400025ae3b71" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-providers-bookmarkprovider" path="packages/providers/BookmarkProvider" revision="66d866abdf7184af7a98edce18012fc33c41b623" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-providers-calendarprovider" path="packages/providers/CalendarProvider" revision="960c914a6b2fd4138c3e54e8d65a645e4470a276" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-providers-calllogprovider" path="packages/providers/CallLogProvider" revision="5941bd440b92232434f03da497918cea7af43e9e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-providers-contactsprovider" path="packages/providers/ContactsProvider" revision="c6f82a6181b62c07236c54a7dab2dedfbebaf34d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-providers-downloadprovider" path="packages/providers/DownloadProvider" revision="7536cfa1047a06e451743f7d58ea191ed4408df8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-providers-mediaprovider" path="packages/providers/MediaProvider" revision="0eb8c8508851355e4a825727a938586ceb7a98f0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-providers-partnerbookmarksprovider" path="packages/providers/PartnerBookmarksProvider" revision="9c3b541b4357011de2047a2e24f92a63c6d8d8a0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-providers-telephonyprovider" path="packages/providers/TelephonyProvider" revision="c7f822647c68dc50816aed4c91f06939f8a1181e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-providers-tvprovider" path="packages/providers/TvProvider" revision="ae862e59ff8e81a079fa6b4d48cdf618b8fb14d1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-providers-userdictionaryprovider" path="packages/providers/UserDictionaryProvider" revision="f22d4e72ec78b215e7bcd47c0b2e2861fac9fc9a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-screensavers-basic" path="packages/screensavers/Basic" revision="a5080b83defd7ddf89d5d89d9ab59606dc719823" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-screensavers-phototable" path="packages/screensavers/PhotoTable" revision="ede6dd0afae1b5c7acaa2a1328e9624e157ffb3f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-services-alternativenetworkaccess" path="packages/services/AlternativeNetworkAccess" revision="ddfb1029c3ab1598845f5d6193af211b1edb287d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-services-builtinprintservice" path="packages/services/BuiltInPrintService" revision="09de2bdbfd73d64dd247b1b4e4ec80c560bdd508" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-services-car" path="packages/services/Car" revision="5da2e50d5ea9e15f5905305b05ed8016bfc62c49" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-services-mms" path="packages/services/Mms" revision="52144996744cb52bfa0985423c61df0fd3a2cb13" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-services-telecomm" path="packages/services/Telecomm" revision="e9195e06125a8de79077172036f0d7d03ac44dfa" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-services-telephony" path="packages/services/Telephony" revision="5e4b98167822efcf4e1a268f126e2ddd08721111" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-packages-wallpapers-livepicker" path="packages/wallpapers/LivePicker" revision="d3f1147aee6fd8043abe89694096951a282e962a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-pdk" path="pdk" revision="8112961f0cfa2bef459f5dd3dd77462cd6325d8b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-platform_testing" path="platform_testing" revision="22b70ad143a8b978cf478040cadf934ca7ed7ad3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-abi-dumps-ndk" path="prebuilts/abi-dumps/ndk" revision="a25b65595fb790dc80820d4392393fa539b88cd6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-abi-dumps-vndk" path="prebuilts/abi-dumps/vndk" revision="7411278a49a8d759dd59cba464f5ebd82296ba2f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-android-emulator" path="prebuilts/android-emulator" revision="e316f9edbcddcf7009d3bf6919830ec2b63854f3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-asuite" path="prebuilts/asuite" revision="4c2eaabe4b1457931ef2d0da508fa10c112c3be2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-build-tools" path="prebuilts/build-tools" revision="a58b1b57d600350c817effa2516ed36adb1bed49" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-bundletool" path="prebuilts/bundletool" revision="94fd4942e5d196d5d2dc47499e5f876c8184c8e0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-checkcolor" path="prebuilts/checkcolor" revision="c642ef358b291084a614a983081720d0ef59d6e1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-checkstyle" path="prebuilts/checkstyle" revision="a4e41fdccb2caa571f9aeb791bb0fefc06b9bb0d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-clang-host-darwin-x86" path="prebuilts/clang/host/darwin-x86" revision="70a45960daf394435ec2fabf34bc701276e522c8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-clang-host-linux-x86" path="prebuilts/clang/host/linux-x86" revision="7b1289663cd5300689f5825ef0cf9eb05081c83e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-clang-tools" path="prebuilts/clang-tools" revision="24d8778d695bdd756a307b903c4d1993ac132d2b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-devtools" path="prebuilts/devtools" revision="5cb0e278ddc2161db13318950eed2ba2c29956a9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-fuchsia_sdk" path="prebuilts/fuchsia_sdk" revision="8d3423cbce4c8a9fa631af578fda1ef0c6441abf" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-gcc-darwin-x86-aarch64-aarch64-linux-android-4.9" path="prebuilts/gcc/darwin-x86/aarch64/aarch64-linux-android-4.9" revision="be292e7b7445e3b0f62f89a6b99f04967f5d720e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-gcc-darwin-x86-arm-arm-linux-androideabi-4.9" path="prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.9" revision="58641e4434ae66df0d8198a3806aed280b5f0823" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-gcc-darwin-x86-host-i686-apple-darwin-4.2.1" path="prebuilts/gcc/darwin-x86/host/i686-apple-darwin-4.2.1" revision="b38ceb474969ba17032b3c0bf36a841140501889" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-gcc-darwin-x86-mips-mips64el-linux-android-4.9" path="prebuilts/gcc/darwin-x86/mips/mips64el-linux-android-4.9" revision="b3a68e192fbbafd3aac96de2148ca00445d7872e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-gcc-darwin-x86-x86-x86_64-linux-android-4.9" path="prebuilts/gcc/darwin-x86/x86/x86_64-linux-android-4.9" revision="f0534379f240db72803da273594dac64656b89a2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-gcc-linux-x86-aarch64-aarch64-linux-android-4.9" path="prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9" revision="3214a204b8149a18fa1ebca2254e407b299560f1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-gcc-linux-x86-arm-arm-linux-androideabi-4.9" path="prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9" revision="4ce3f20ffa9c2fff30d3465f2801d10420663121" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-gcc-linux-x86-host-x86_64-linux-glibc2.17-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.17-4.8" revision="53ba148ea43a70cceff101830eb44b932e6553d0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-gcc-linux-x86-host-x86_64-w64-mingw32-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8" revision="6af64f0b67db9ba905654b8152823de21ca99154" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-gcc-linux-x86-mips-mips64el-linux-android-4.9" path="prebuilts/gcc/linux-x86/mips/mips64el-linux-android-4.9" revision="00e15925600ee0dd5f39e4a34e7870de47c13736" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-gcc-linux-x86-x86-x86_64-linux-android-4.9" path="prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9" revision="8469ad0c03c97c5cc8f5501f9f331eb746bc4345" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-gdb-darwin-x86" path="prebuilts/gdb/darwin-x86" revision="7fa7affd4a3356624187b436c8a3a075421107ab" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-gdb-linux-x86" path="prebuilts/gdb/linux-x86" revision="e2ceb27f958afcc0a1c7bd16c92d168f8b7ca939" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-go-darwin-x86" path="prebuilts/go/darwin-x86" revision="812f970cf6645df291664e9f774f88750f731fb8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-go-linux-x86" path="prebuilts/go/linux-x86" revision="6b05df8c936396ff9466136ccfaf8d61f716cddb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-gradle-plugin" path="prebuilts/gradle-plugin" revision="f529b20a5af18ac9e05aa41326a82dc6cc875a5e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-jdk-jdk8" path="prebuilts/jdk/jdk8" revision="a4bcf4f04bf988955b2e492b1d85ef2378954323" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-jdk-jdk9" path="prebuilts/jdk/jdk9" revision="dfe701f045b82428c37fcd9e45d429e8d06fbd8f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-manifest-merger" path="prebuilts/manifest-merger" revision="8cf39623e459933125483d0299a41aef7bc0d364" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-maven_repo-android" path="prebuilts/maven_repo/android" revision="511a320455c2357daea28e72d0e81f4535245b21" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-maven_repo-bumptech" path="prebuilts/maven_repo/bumptech" revision="3d54faa0e71a2133e7865833d30a3a035aa7904e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-misc" path="prebuilts/misc" revision="e4d0f22c676e86ff68da9c4f294812da722af2f7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-ndk" path="prebuilts/ndk" revision="a8e57cd2cd5c69967d71ed3457a82568861b3c33" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-python-darwin-x86-2.7.5" path="prebuilts/python/darwin-x86/2.7.5" revision="0163e36dc4b60aba48f99234f9023519abbe6517" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-python-linux-x86-2.7.5" path="prebuilts/python/linux-x86/2.7.5" revision="92798e5ef70d582950e3d9fa67873de9795ab502" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-qemu-kernel" path="prebuilts/qemu-kernel" revision="94dd30986196161b0ecdf4a465dc94e42e5d733c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-r8" path="prebuilts/r8" revision="0cce9ba5c2de58ddea785c3b3bb22bd539d005a6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-sdk" path="prebuilts/sdk" revision="f695b827bbb5c949e0a82b2c2d5fa8f22ac068d9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-tools" path="prebuilts/tools" revision="8ea67fb27733ff52fd1e6ebce6f2cc6640623298" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-vndk-v27" path="prebuilts/vndk/v27" revision="41916ec6cd947a705902cb20534e83960cb7b013" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-prebuilts-vndk-v28" path="prebuilts/vndk/v28" revision="0c2cb64ca1682a67034c3163d92ae1b6e1207ec3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-sdk" path="sdk" revision="d40ca99b08984704448e04c6672ab9169e7ce924" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4">
    <linkfile src="current/androidx-README.md" dest="frameworks/support/README.md"/>
  </project>
  <project name="platform-system-apex" path="system/apex" revision="08cc8bec6591a938b6095dc7bc541219dd2078e3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-ashmemd" path="system/ashmemd" revision="540d579f3079b1796414f12118632c6adc9387e3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-bpf" path="system/bpf" revision="ce03e13a8e28cd2e53784f0447759b7b7355ab9c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-bpfprogs" path="system/bpfprogs" revision="89c774dd2bf349c81ede1db7a599eb5cb0a43515" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-bt" path="system/bt" revision="dab9cddcee28421402be5afb0d824915ea746cfb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-ca-certificates" path="system/ca-certificates" revision="c6416488c70654f91a46ff1bce706c97389d4a8e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-chre" path="system/chre" revision="06146d54884c7a60d2419326939d0558b6d5a692" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-connectivity-wificond" path="system/connectivity/wificond" revision="2e4f97226fd858f1a01a5d32845ec8981644beed" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-connectivity-wifilogd" path="system/connectivity/wifilogd" revision="4dcae5651bcb21789929ba7f080e92e207fe5628" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-core" path="system/core" revision="3634ae29c8edf1e61a12425c278a1cd0ac08c851" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-extras" path="system/extras" revision="14ac430440fb1ee105680d84e1500be8ef9400e7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-gatekeeper" path="system/gatekeeper" revision="c9e9e63bf9147a900ae7d0a5f6b0723b8eb717cb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-gsid" path="system/gsid" revision="16530ede0d2b85e0465f0216b87d95df670a2708" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-hardware-interfaces" path="system/hardware/interfaces" revision="1e8362f536c98c2668b75b8d906fb5600babab91" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-hwservicemanager" path="system/hwservicemanager" revision="c7c5db80460b4a6d19371165941cf1caa345bc7c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-iorap" path="system/iorap" revision="441263b835fd877878b741af7a0d3965c5282130" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-keymaster" path="system/keymaster" revision="65efdbdee288c39389993a6da6d263539fae8123" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-libfmq" path="system/libfmq" revision="ebc3419c62eceeb00d9960c4810b323f2679a3bb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-libhidl" path="system/libhidl" revision="65c02b0eb0874b54f19ae408b7a4bead12ab593b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-libhwbinder" path="system/libhwbinder" revision="df2463d2f78e1aa6889ca2168d695eba551f6cf8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-libsysprop" path="system/libsysprop" revision="efe33c9f53f833cb582a1f623d6418939519a1b6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-libufdt" path="system/libufdt" revision="715ca232a5b4b870968eceedc332eb84cf312963" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-libvintf" path="system/libvintf" revision="57d58ff3d5db0d78bf80e8a85706f77120506a85" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-linkerconfig" path="system/linkerconfig" revision="729bc5978e09f803c12e26e377f18bd022166cc7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-media" path="system/media" revision="977975deb02d65e07870a62089f4891a6501d391" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-netd" path="system/netd" revision="b1c736ec5d04e06587ee68fb95be7f4c15cd4828" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-nfc" path="system/nfc" revision="80b19999805f8390093468fdd10626c76ce2bf6d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-nvram" path="system/nvram" revision="0f6a0aa324ba9f6197f4f9b4a26c3db4fcd2935f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-security" path="system/security" revision="6574ead72d6691b906af7a1cdd7479cf219fe49c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-sepolicy" path="system/sepolicy" revision="d3c4284673044406f654e2cd7afeaa0ff5ffd02c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-server_configurable_flags" path="system/server_configurable_flags" revision="1d7caad900cb9cc24202d8aea5387a363135b2e1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-testing-gtest_extras" path="system/testing/gtest_extras" revision="7eae4114c5b03eb4b991167a2eacabf021f50441" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-timezone" path="system/timezone" revision="2caa43b60ced0a2f026a6d27701703579b51e2ad" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-tools-aidl" path="system/tools/aidl" revision="23dd4ea76f01eec30ac99b603982682ea5176688" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-tools-hidl" path="system/tools/hidl" revision="df179c7d547c13860f6b0cbd060fa50fc53063cb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-tools-sysprop" path="system/tools/sysprop" revision="99a0a81d73929cff8cbb3115c65eb779017e09ae" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-tools-xsdc" path="system/tools/xsdc" revision="b564858b10510e64b44e3afd4c8dffe66dc249fb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-ucontainer" path="system/ucontainer" revision="b63e91330946f9c73e1c72032cfc31d1a8c9bc8f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-update_engine" path="system/update_engine" revision="30176ddeae8a6262c321cf8080cf8194d7bde0c7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-system-vold" path="system/vold" revision="a352de1f95762adfe4efe5a9cac96bf938bd7c88" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-test-framework" path="test/framework" revision="d197e5e045630cfbcfc9313c95fcbbde61fb2bfc" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-test-mlts-benchmark" path="test/mlts/benchmark" revision="f837b5a0a561fa0a96e483d7c8fae0b0ae65b5ac" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-test-mlts-models" path="test/mlts/models" revision="a92852efb52754926c69e9cdbe651de935f55349" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-test-sts" path="test/sts" revision="4ea5f5482bafb264872f66e8a188afb1b9e3289f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-test-suite_harness" path="test/suite_harness" revision="d1dc7ca85df83c11cbce1420039e8b119f65de95" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-test-vti-alert" path="test/vti/alert" revision="2270d160e38f0623d708cce36754fe14168dce64" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-test-vti-dashboard" path="test/vti/dashboard" revision="a9bd47e4caa21d535fb89c0e6efe23fa08d25847" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-test-vti-fuzz_test_serving" path="test/vti/fuzz_test_serving" revision="6319e3d94c65669050c49c6ca570096d41823b82" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-test-vti-test_serving" path="test/vti/test_serving" revision="417ad51c260dc9d0bfc6b64e567fa67b112c1560" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-test-vts" path="test/vts" revision="fda9b4904a8f831ba657898fe9fe5cdec9125493" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-test-vts-testcase-fuzz" path="test/vts-testcase/fuzz" revision="3845288c52bf080b0c5a01005de15e11a0033254" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-test-vts-testcase-hal" path="test/vts-testcase/hal" revision="c1d9fbb134c12891dca374888d61ec0955b242f8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-test-vts-testcase-hal-trace" path="test/vts-testcase/hal-trace" revision="2695892568f8fade958ec0ec172df8f295ae4112" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-test-vts-testcase-kernel" path="test/vts-testcase/kernel" revision="2fb6198c35a0a33467a439d177d5d2b4d4652044" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-test-vts-testcase-nbu" path="test/vts-testcase/nbu" revision="0712e2a442364af77a0b1dda0adf922d1d1447bc" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-test-vts-testcase-performance" path="test/vts-testcase/performance" revision="f0e5dcee43de6f9c44a3872721087d96eaa48273" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-test-vts-testcase-security" path="test/vts-testcase/security" revision="eea627799809b8983ccfb97423e1447bdca8146e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-test-vts-testcase-vndk" path="test/vts-testcase/vndk" revision="5c3af3d1069012326ad2cac89be6419b371a5ce2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-tools-acloud" path="tools/acloud" revision="a4701b3b46bef2c27ad138ff93c3ed993844e470" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-tools-apifinder" path="tools/apifinder" revision="7fa228a612a41c551ddd786c79bd84294699178c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-tools-apksig" path="tools/apksig" revision="83eec36412695949f24be9d917ed7ba26fff3f5c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-tools-apkzlib" path="tools/apkzlib" revision="ae1086c47adc35af5c36b5f2e93afc0c2ce27a8a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-tools-asuite" path="tools/asuite" revision="e301e8ebc29a550920f2aea7d9591ed90b13080a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-tools-currysrc" path="tools/currysrc" revision="2e5983face85bcb39a206900879e2db530765169" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-tools-dexter" path="tools/dexter" revision="71670e520938b04268283dc53cda1e167610952e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-tools-loganalysis" path="tools/loganalysis" revision="20dc959b5b29014b16cc6ad4318918d70c65c841" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-tools-metalava" path="tools/metalava" revision="edcafddcb54e149af8d4135a346501dde802fb30" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-tools-ndkports" path="tools/ndkports" revision="74fefbc2160250129cbd157272fcfb3c9ac20f18" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-tools-repohooks" path="tools/repohooks" revision="a4350d0cc24b53d77b2cea9b8a9a2e2ff9e828f7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-tools-security" path="tools/security" revision="3c5ee5d6f2f50895611eacd71a62b11efcfb0648" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-tools-test-connectivity" path="tools/test/connectivity" revision="428b0925776d925a1cb1d1c89e61c023469a87eb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-tools-test-graphicsbenchmark" path="tools/test/graphicsbenchmark" revision="ed1a7ab48149fd3c96d2dc841bea4feb3c361857" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-tools-tradefederation" path="tools/tradefederation/core" revision="6be2b995c4a23416e0bc6ddc53fce210bc2c8239" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-tools-tradefederation-contrib" path="tools/tradefederation/contrib" revision="150a6187b5c01ec10e6389888d64641272900f01" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-tools-trebuchet" path="tools/trebuchet" revision="5c74aa19df59af3292dadc6db03ffbf5235b3a9d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-tools-vendor-google_prebuilts-arc" path="tools/vendor/google_prebuilts/arc" revision="f7e95a08c24a975117746a0f36f730a48db79287" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-vendor-google_gtvs" path="vendor/google_gtvs" revision="c58c205eece77ebaf85c37591e495ad29ebc3609" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-vendor-google_vts" path="vendor/google_vts" revision="f07a8f0eb404e41b14c74df5bd7c498a68448221" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="platform-vendor-widevine" path="vendor/widevine" revision="0b4a4ee66135c2d0c3f73d3929e0f724dbd68a17" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="scm" path="vendor/skb/framework/scm" remote="skb_bcf" revision="6354afd3962791c17a770ade20276c8b165c18c3" upstream="BTF_API_LEVEL_6_android-10" dest-branch="BTF_API_LEVEL_6_android-10" groups="skb_bcf">
    <linkfile src="sync_btf_src.sh" dest="sync_btf_src.sh"/>
  </project>
  <project name="skb_bt-services" path="vendor/skb/prebuilts/skb_bt-services" remote="skb_prebuilts" revision="464f9631a6fc29a1ec022fbf371bb043338560d0" upstream="BTF_API_LEVEL_6" dest-branch="BTF_API_LEVEL_6" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="skb_device-control-app" path="vendor/skb/prebuilts/skb_device-control-app" remote="skb_prebuilts" revision="dbd0c822c12db65c8b1d86ac60dd601029702b75" upstream="BTF_API_LEVEL_6" dest-branch="BTF_API_LEVEL_6" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="skb_device-profile" path="vendor/skb/device-profile" remote="skb_prebuilts" revision="4e584d715166a54fe056c20f47d8917663e2e7f8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="skb_edmp" path="vendor/skb/prebuilts/skb_edmp" remote="skb_prebuilts" revision="0b92e30b29bb00b0c433043808b7d33732506817" upstream="BTF_API_LEVEL_6" dest-branch="BTF_API_LEVEL_6" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="skb_fonts" path="vendor/skb/prebuilts/skb_fonts" remote="skb_prebuilts" revision="2656f17fc0c0b1783e7aa7606dddfdd898b77986" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="skb_hlsplayer" path="vendor/skb/prebuilts/skb_hlsplayer" remote="skb_prebuilts" revision="415d10c2fd0d1194315b8a49011afa63d0754469" upstream="release/5.3.4" dest-branch="release/5.3.4" groups="skb_prebuilts,testauto" sync-c="true" sync-tags="false"/>
  <project name="skb_ime" path="vendor/skb/prebuilts/skb_ime" remote="skb_prebuilts" revision="db12b158f7e0f656a6374cd3a966ef225ef7d32f" upstream="BTF_API_LEVEL_6" dest-branch="BTF_API_LEVEL_6" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="skb_kids-guide" path="vendor/skb/prebuilts/skb_kids-guide" remote="skb_prebuilts" revision="c06930386e3b3e2545f36e62b4f446c22c068842" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="skb_logsystem" path="vendor/skb/prebuilts/skb_logsystem" remote="skb_prebuilts" revision="ad8639a9176cd5ff4718a55f6d2c78889ebc5301" upstream="BTF_API_LEVEL_6" dest-branch="BTF_API_LEVEL_6" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="skb_menu-image" path="vendor/skb/prebuilts/skb_menu-image" remote="skb_prebuilts" revision="f96f332f80f416295ba0d279748826f6deb65c04" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="skb_navigator" path="vendor/skb/prebuilts/skb_navigator" remote="skb_prebuilts" revision="e685c12613edd9321d494a17e7a48c2f6aed5183" upstream="BTF_API_LEVEL_6" dest-branch="BTF_API_LEVEL_6" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="skb_rcu-firmware" path="vendor/skb/prebuilts/skb_rcu-firmware" remote="skb_prebuilts" revision="f75eece7ee4a432e4d5217c85c61ef91aa2b283d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="skb_smartrcuagent" path="vendor/skb/prebuilts/skb_smartrcuagent" remote="skb_prebuilts" revision="7c4ad26f200bbf5ed71464d3c727caeb0b23d498" upstream="BTF_API_LEVEL_6" dest-branch="BTF_API_LEVEL_6" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="skb_xwalk" path="vendor/skb/prebuilts/skb_xwalk" remote="skb_prebuilts" revision="a232320be31194169dfdc46c3a8693bffcef9c3f" upstream="BTF_API_LEVEL_6" dest-branch="BTF_API_LEVEL_6" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="skp_animatedad" path="vendor/skb/prebuilts/skp_animatedad" remote="skb_prebuilts" revision="a497c7c13adb3e98540ac4f4e90f4d088ec986a9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="skp_cs-lib" path="vendor/skb/prebuilts/skp_cs-lib" remote="skb_prebuilts" revision="5a751b6986800b8bcf03c650f517104b1410f539" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="skt_mpp" path="vendor/skb/prebuilts/skt_mpp" remote="skb_prebuilts" revision="5cb327016d3259014b213c0ffa83c89187fab57e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="skt_nugu" path="vendor/skb/prebuilts/skt_nugu" remote="skb_prebuilts" revision="c51f05bc042cbc146e55bdf9bbb8bbea636b4b66" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="skt_smart-home" path="vendor/skb/prebuilts/skt_smart-home" remote="skb_prebuilts" revision="b681e94168be34c68c2308f3f2fe3e468abb03e2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="tisquare_family-earphone" path="vendor/skb/prebuilts/tisquare_family-earphone" remote="skb_prebuilts" revision="5324b42b5e84b331204813cc9c6cd33fb32619d7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="tisquare_mdns-manager" path="vendor/skb/prebuilts/tisquare_mdns-manager" remote="skb_prebuilts" revision="d4556dc2434221873e9761015cc971b4e47fa8ad" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="toolchain-pgo-profiles" path="toolchain/pgo-profiles" revision="01759dfb7a82934d9bc279c960445d10f5c0acbb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
  <project name="uei_quickset" path="vendor/skb/prebuilts/uei_quickset" remote="skb_prebuilts" revision="077d476da1e9e931317c89f1a63385df3e868a38" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="vendor-foxconn" path="vendor/foxconn" revision="832e63ca6def8b28773f5324e9af4d2356a3ddc3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="foxconn"/>
  <project name="vendor-mw-sptek" path="vendor/sptek" remote="sptek-syna" revision="7804929ab26fafe9595b31c8df927a4a29095247" upstream="bg5ct-android-10" dest-branch="bg5ct-android-10" groups="mw"/>
  <project name="vendor-scripts" path="vendor/scripts" revision="d43a423d959fa4fbcbc62019868574ba82c53455" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="foxconn,sptek">
    <linkfile src="build_all.sh" dest="build_all.sh"/>
    <linkfile src="updatezip.sh" dest="updatezip.sh"/>
    <linkfile src="env.sh" dest="env.sh"/>
    <linkfile src="release.sh" dest="release.sh"/>
  </project>
  <project name="zinnaworks_push-agent" path="vendor/skb/prebuilts/zinnaworks_push-agent" remote="skb_prebuilts" revision="6bcf9d2a4f2cc577af1137b8b1ebe760ef9c4efc" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  <project name="zooinnet_rtsp" path="vendor/skb/prebuilts/zooinnet_rtsp" remote="skb_prebuilts" revision="0fdfacba5efd86343d6616176590860cdb918560" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
  
  <repo-hooks in-project="platform-tools-repohooks" enabled-list="pre-upload"/>
</manifest>
ref_v534r27_D735.xml (156,946 bytes)   
CSMSKBSBLT-201-Unmute-HDMI-2.patch (2,384 bytes)   
diff --git a/amp/src/aal/sound/sound_api.c b/amp/src/aal/sound/sound_api.c
index 27c374c..ac3b5dd 100755
--- a/amp/src/aal/sound/sound_api.c
+++ b/amp/src/aal/sound/sound_api.c
@@ -3067,6 +3067,7 @@ HRESULT AMP_SND_SetStreamVolumeIndB(AMP_IN HANDLE hStream, AMP_IN float fVolume)
     SND_STRM *pStream = 0;
     UINT32 uiVolume = 0;
     AMP_APP_PARAST stAppParam;
+    AMP_SOUND_DRIVER *pSndDrv = g_stSndDriver;
 
     SND_API_ENTER();
     SNDDRV_CHECKVALID();
@@ -3097,6 +3098,7 @@ HRESULT AMP_SND_SetStreamVolumeIndB(AMP_IN HANDLE hStream, AMP_IN float fVolume)
         (pStream->PeerPortConn.hInterHandle == SOUND_PORTID_PASSTHROUGH &&
         pStream->PeerPortConn.uiFlags == HDMI_PATH))
     {
+        MV_OSAL_Mutex_Lock(pSndDrv->hDrvMutex);
 #ifdef CONFIG_AMP_AUDIO_MUTE_PT_FOR_STREAM
         SNDLOGD("HDMI pass through case, stream volume is set to AOUT!\n");
         AMP_RPC(rc, AMP_SNDSINK_SetAoutStreamVolume, pStream->hSndSinkComp,
@@ -3109,6 +3111,11 @@ HRESULT AMP_SND_SetStreamVolumeIndB(AMP_IN HANDLE hStream, AMP_IN float fVolume)
 #if 1  //tony debug
         pStream->uiStreamVolume = uiVolume;
 #endif 
+        if( pStream->uiStreamVolume != 0 ){
+            AMP_RPC(rc, AMP_SNDSINK_SetAoutStreamVolume, pStream->hSndSinkComp, HDMI_PATH, 0x40000000L);
+        }
+        MV_OSAL_Mutex_Unlock(pSndDrv->hDrvMutex);
+
         return rc;
     }
 
@@ -3482,7 +3489,6 @@ HRESULT AMP_SND_SetStreamMute(AMP_IN HANDLE hStream, AMP_IN BOOL bMute)
     SNDSTRM_CHECKVALID(hStream);
     pStream = (SND_STRM *)hStream;
     stAppParam._d = AMP_APP_PARAIDX_VOLUME;
-
     
     if((pStream->PeerPortConn.ePeerType == AMP_PORT_AREN_OUT_SPDIF)||
         (pStream->PeerPortConn.hInterHandle == SOUND_PORTID_PASSTHROUGH &&
@@ -3530,6 +3536,7 @@ HRESULT AMP_SND_SetStreamMute(AMP_IN HANDLE hStream, AMP_IN BOOL bMute)
         (pStream->PeerPortConn.hInterHandle == SOUND_PORTID_PASSTHROUGH &&
         pStream->PeerPortConn.uiFlags == HDMI_PATH))
     {
+        MV_OSAL_Mutex_Lock(pSndDrv->hDrvMutex);
 #ifdef CONFIG_AMP_AUDIO_MUTE_PT_FOR_STREAM
         SNDLOGD("HDMI pass through case, stream volume is set to AOUT!\n");
 #if 1 //tony debug
@@ -3545,6 +3552,7 @@ HRESULT AMP_SND_SetStreamMute(AMP_IN HANDLE hStream, AMP_IN BOOL bMute)
                      hStream);
         }
 #endif
+        MV_OSAL_Mutex_Unlock(pSndDrv->hDrvMutex);
         return rc;
     }
 

(SW) Dean Chiang

2023-01-31 11:30

developer   ~0011909

Hi Sangmin,
upload to
/release_by_fxn/swan_test_image/20230131_mantis1496

Thank you
Dean Chiang

(ALTech) Sangmin Choi

2023-02-13 16:27

developer   ~0012149

Hello, Dean,

Could you please build a test firmware after applied attached patches? SD only.

This firmware is based on 536 branches.

syna-release/ampsdk
BTVSBOX-629-PCR-offset.patch

Thank you.
Sangmin Choi.
BTVSBOX-629-PCR-offset.patch (5,369 bytes)   
diff --git a/amp/src/ddl/comp_clk/source/clk_avsync.c b/amp/src/ddl/comp_clk/source/clk_avsync.c
index a80fa15..0e094b6 100755
--- a/amp/src/ddl/comp_clk/source/clk_avsync.c
+++ b/amp/src/ddl/comp_clk/source/clk_avsync.c
@@ -938,6 +938,33 @@ BOOL check_pause_pts(AVSYNC_MGR *pSyncMgr, SYNC_STREAM *pStream, BD_INFO *pBDInf
     return ret;
 }
 
+AMP_CLK_ACT check_sim_out_pts(AVSYNC_MGR *pSyncMgr, SYNC_STREAM *pStream, BD_INFO *pBDInfo)
+{
+    UINT uiRange = 900000;
+    AMP_CLK_ACT eAct = AMP_CLK_DISP;
+
+    if (check_pts_range(pBDInfo->m_uiPtsStart,
+                        pSyncMgr->m_uiMaxPTS,
+                        uiRange, uiRange,
+                        FALSE) == AMP_CLK_DISP) {
+        if (!pSyncMgr->m_fAllStreamsReady) {
+            eAct = AMP_CLK_HOLD;
+        } else if (GET_PTS_VAL64(pBDInfo->m_uiPtsStart) <
+            GET_PTS_VAL64(pSyncMgr->m_uiMaxPTS)) {
+            eAct = AMP_CLK_DROP;
+        }
+    } else {
+        // Disable simultaneous output
+        AVSH("[%d]CHECK_%s PTS:[0x%09llX][%lld],STC:[0x%09llX][%lld], [OPT]SIM_OUTPUT(DISABLED!)!",
+            pSyncMgr->m_pAVClock->m_uiClockID, pStream->m_szName,
+            GET_PTS_VAL64(pBDInfo->m_uiPtsStart), GET_PTS_VAL64(pBDInfo->m_uiPtsStart),
+            GET_PTS_VAL64(pSyncMgr->m_uiMaxPTS), GET_PTS_VAL64(pSyncMgr->m_uiMaxPTS));
+        pSyncMgr->m_fSimOut = FALSE;
+    }
+
+    return eAct;
+}
+
 VOID local_playback_res_change(AVSYNC_MGR *pSyncMgr, BOOL fDone)
 {
     if (!fDone) {
@@ -3175,7 +3202,7 @@ VOID dtv_check_pcr(AVSYNC_MGR *pSyncMgr, UINT64 pcr, UINT64 stc)
     diff_local_clk = PTS64_DIFF_WRAP(stc, pSyncMgr->m_recent_local_clk);
     freq_diff = diff_local_clk - diff_src_clk;
 
-    AVSM("[AVS]%s(pcr:0x%x(%d), stc:0x%x(%d), diff: phase:%lld(%lld)"
+    AVSI("[AVS]%s(pcr:0x%x(%d), stc:0x%x(%d), diff: phase:%lld(%lld)"
          " freq:%lld(%lld))", __FUNCTION__,
         (UINT32)pcr, (UINT32)PTS64_DIFF_WRAP(pcr, last_pcr),
         (UINT32)stc, (UINT32)PTS64_DIFF_WRAP(stc, last_stc),
@@ -3640,7 +3667,7 @@ VOID dtv_check_avsync(AVSYNC_MGR *pSyncMgr)
             } else if (IS_PTS_VALID64(pSyncMgr->m_uiTimeFirstSample)) {
                 UINT64 t = avclock_get_wall64(pSyncMgr->m_pAVClock, FALSE);
                 UINT64 diff = t - GET_PTS_VAL64(pSyncMgr->m_uiTimeFirstSample);
-                if (diff > 90000) {
+                if ((diff > 90000 && pSyncMgr->m_fAllStreamsReady) || diff > 900000) {
                     pSyncMgr->m_sPsp.m_uiPcr = pSyncMgr->m_uiMinPTS;
                     pSyncMgr->m_sPsp.m_uiStc = t;
                     pSyncMgr->m_uiStartSTC = GET_PTS_VAL64(pSyncMgr->m_sPsp.m_uiPcr) -
@@ -3715,12 +3742,8 @@ HRESULT dtv_check_video_pts(AVSYNC_MGR *pSyncMgr,
     }
 
     if (pSyncMgr->m_fSimOut && pSyncMgr->m_eSyncStatus == SYNC_LOCKING) {
-        if (!pSyncMgr->m_fAllStreamsReady) {
-            eAct = AMP_CLK_HOLD;
-            goto _Exit;
-        } else if (GET_PTS_VAL64(pBDInfo->m_uiPtsStart) <
-            GET_PTS_VAL64(pSyncMgr->m_uiMaxPTS)) {
-            eAct = AMP_CLK_DROP;
+        eAct = check_sim_out_pts(pSyncMgr, pStream, pBDInfo);
+        if (eAct != AMP_CLK_DISP) {
             goto _Exit;
         }
     }
@@ -3954,12 +3977,8 @@ HRESULT dtv_check_audio_pts(AVSYNC_MGR *pSyncMgr,
     }
 
     if (pSyncMgr->m_fSimOut && pSyncMgr->m_eSyncStatus == SYNC_LOCKING) {
-        if (!pSyncMgr->m_fAllStreamsReady) {
-            eAct = AMP_CLK_HOLD;
-            goto _Exit;
-        } else if (GET_PTS_VAL64(pBDInfo->m_uiPtsStart) <
-            GET_PTS_VAL64(pSyncMgr->m_uiMaxPTS)) {
-            eAct = AMP_CLK_DROP;
+        eAct = check_sim_out_pts(pSyncMgr, pStream, pBDInfo);
+        if (eAct != AMP_CLK_DISP) {
             goto _Exit;
         }
     }
@@ -4195,7 +4214,7 @@ VOID live_net_policy_init(AVSYNC_MGR *pSyncMgr)
 
     pSyncMgr->m_fPcrEnabled     = TRUE;
     pSyncMgr->m_fPcrAdj         = TRUE;
-    pSyncMgr->m_iPcrOffset      = 27000;
+    pSyncMgr->m_iPcrOffset      = 27000*4;
     pSyncMgr->m_uiPcrAdjThresh  = 300;
     pSyncMgr->m_iPcrOrigOffset  = pSyncMgr->m_iPcrOffset;
 
@@ -5210,6 +5229,12 @@ HRESULT avsync_mgr_new_pcr(AVSYNC_MGR *pSyncMgr, UINT64 uiPcr, UINT64 uiStc, UIN
 
     dtv_check_pcr(pSyncMgr, uiPcr, uiClk);
 
+    if (!pSyncMgr->m_fPcrValid ){
+        AVSH("[PCR]PCR:0x%08x, LastPCR:0x%08x, P-LP:%6lld, T-LT:%6d, [%d][%d]",
+            (INT32)pcr, (INT32)last_pcr, (pcr - last_pcr),
+            (stc - last_stc), pSyncMgr->m_fPcrDiscPending,
+            pSyncMgr->m_uiPcrContinueCnt);
+    }
     AVSI("[PCR]PCR:0x%08x, LastPCR:0x%08x, P-LP:%6lld, T-LT:%6d, [%d][%d]",
          (INT32)pcr, (INT32)last_pcr, (pcr - last_pcr),
          (stc - last_stc), pSyncMgr->m_fPcrDiscPending,
@@ -5238,8 +5263,8 @@ HRESULT avsync_mgr_new_pcr(AVSYNC_MGR *pSyncMgr, UINT64 uiPcr, UINT64 uiStc, UIN
         SET_PTS_VALID64(pSyncMgr->m_uiMinPCR);
     }
 
-    if (!pSyncMgr->m_fPcrValid && last_pcr && pcr != last_pcr &&
-        ((pcr - last_pcr) < (stc - last_stc))) {
+    if (!pSyncMgr->m_fPcrValid && last_pcr && pcr != last_pcr /*  ){ */
+         && ((pcr - last_pcr) < (stc - last_stc))) {
         pSyncMgr->m_fPcrValid = TRUE;
         AVSH("[AVS]PCR VALID(PCR:0x%x)!", pSyncMgr->m_sPsp.m_uiPcr);
         return SUCCESS;
BTVSBOX-629-PCR-offset.patch (5,369 bytes)   

(SW) Dean Chiang

2023-02-14 14:54

developer   ~0012170

Hi Sangmin,
upload to
/release_by_fxn/swan_test_image/20230214_mantis1496

Thank you
Dean Chiang

(ALTech) Sangmin Choi

2023-02-21 10:29

developer   ~0012271

Hi, Dean,

Could you please build a test firmware after applied attached patches? SD only.

This firmware is based on 536 branches.

syna-release/ampsdk/drm/widevine
0001-BTVV-5675-MAX_KEY_PER_SESSION-26-100.patch

Thank you.
Sangmin Choi.
0001-BTVV-5675-MAX_KEY_PER_SESSION-26-100.patch (784 bytes)   
From 55208a6b04f7aff6b14fc5cd21a7871e7c612d8c Mon Sep 17 00:00:00 2001
From: Sangmin Choi <smchoi@altech.kr>
Date: Tue, 21 Feb 2023 11:26:02 +0900
Subject: [PATCH] [BTVV-5675] MAX_KEY_PER_SESSION 26 -> 100

---
 wvserver/inc/DRM_WIDEVINE_Server_API.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/wvserver/inc/DRM_WIDEVINE_Server_API.h b/wvserver/inc/DRM_WIDEVINE_Server_API.h
index 8642d4d..0caef9a 100755
--- a/wvserver/inc/DRM_WIDEVINE_Server_API.h
+++ b/wvserver/inc/DRM_WIDEVINE_Server_API.h
@@ -64,7 +64,8 @@
 #else
 #define MAX_SESSION_NUMBER   8
 #endif
-#define MAX_KEY_PER_SESSION  26
+//#define MAX_KEY_PER_SESSION  26
+#define MAX_KEY_PER_SESSION  100
 
 #define DATA_PATH_TYPE              0x1
 #define ALLOW_GENERIC_ENCRYPT       0x2
-- 
2.17.1

(SW) Dean Chiang

2023-02-21 15:09

developer   ~0012280

Hi Sangmin,

upload to
/release_by_fxn/swan_test_image/20230221_mantis1496

Thank you
Dean Chiang

(ALTech) Sangmin Choi

2023-02-23 14:46

developer   ~0012340

Hi, Dean,

Could you please build a test firmware after applied attached patches? SD only.

This firmware is based on 536 branches.

vendor/skb/prebuilts/boot_config
0001-19.536.904.patch

Thank you.
Sangmin Choi.
0001-19.536.904.patch (139 bytes)   
diff --git a/version.txt b/version.txt
index 101f4b4..ec8ac7c 100644
--- a/version.txt
+++ b/version.txt
@@ -1 +1 @@
-19.536.1
+19.536.904
0001-19.536.904.patch (139 bytes)   

(SW) Dean Chiang

2023-02-23 16:10

developer   ~0012349

Hi Sangmin,

upload to
/release_by_fxn/swan_test_image/20230223_mantis1496

Thank you
Dean Chiang

(ALTech) Sangmin Choi

2023-03-02 09:14

developer   ~0012396

Hi, Dean,

Could you please build a test firmware after applied attached patches? SD only.

This firmware is based on 536 branches.

vendor/skb/prebuilts/boot_config
0001-19.536.906.patch

Thank you.
Sangmin Choi.
0001-19.536.906.patch (139 bytes)   
diff --git a/version.txt b/version.txt
index 101f4b4..b2577a7 100644
--- a/version.txt
+++ b/version.txt
@@ -1 +1 @@
-19.536.1
+19.536.906
0001-19.536.906.patch (139 bytes)   

(SW) Dean Chiang

2023-03-02 10:37

developer   ~0012400

Hi Sangmin,

upload to
/release_by_fxn/swan_test_image/20230302_mantis1496

Thank you
Dean Chiang

(ALTech) Sangmin Choi

2023-03-06 09:39

developer   ~0012434

Hi, Dean,

Could you please build a test firmware after applied attached patches? SD only.

This firmware is based on 536 branches.

vendor/skb/prebuilts/boot_config
0001-19.536.907.patch

Thank you.
Sangmin Choi.
0001-19.536.907.patch (139 bytes)   
diff --git a/version.txt b/version.txt
index 101f4b4..b2577a7 100644
--- a/version.txt
+++ b/version.txt
@@ -1 +1 @@
-19.536.1
+19.536.907
0001-19.536.907.patch (139 bytes)   

(SW) Dean Chiang

2023-03-06 14:00

developer   ~0012437

Hi Sangmin,

upload to
/release_by_fxn/swan_test_image/20230306_mantis1496

Thank you
Dean Chiang

(ALTech) Sangmin Choi

2023-03-08 15:04

developer   ~0012467

Hi, Dean,

Could you please build a test firmware after applied attached patches? SD only.

This firmware is based on 536 branches.

vendor/skb/prebuilts/boot_config
0001-19.536.908.patch

Thank you.
Sangmin Choi.
0001-19.536.908.patch (139 bytes)   
diff --git a/version.txt b/version.txt
index 101f4b4..b2577a7 100644
--- a/version.txt
+++ b/version.txt
@@ -1 +1 @@
-19.536.1
+19.536.908
0001-19.536.908.patch (139 bytes)   

(SW) Jerry Lin

2023-03-08 19:08

developer   ~0012474

Hi Sangmin,

upload to
/release_by_fxn/swan_test_image/20230308_mantis1496

Jerry

(ALTech) Sangmin Choi

2023-03-09 10:31

developer   ~0012479

Hello, Jerry,

There was missed commit yesterday, so 20230308_mantis1496 firmware didn't work correctly.

Could you please build again after update all repositories? SD only.
Also, please apply previous patch.

vendor/skb/prebuilts/boot_config
0001-19.536.908.patch

And, I deleted below firmware.
/release_by_fxn/swan_test_image/20230308_mantis1496

Thank you.
Sangmin Choi.

(SW) Jerry Lin

2023-03-09 14:04

developer   ~0012483

Hi Sangmin,

upload to
/release_by_fxn/swan_test_image/20230309_mantis1496

Jerry

(ALTech) Sangmin Choi

2023-03-10 10:03

developer   ~0012498

Hi, Jerry,

Could you please build a test firmware after applied attached patches? SD and ND.

syna-release/ampsdk
MMCEI-10037-do-not-send-zero-110541.patch

Thank you.
Sangmin Choi.

(ALTech) Sangmin Choi

2023-03-10 11:09

developer   ~0012500

MMCEI-10037-do-not-send-zero-110541.patch (905 bytes)   
diff --git a/amp/src/ddl/comp_aout/aout_hdmi.c b/amp/src/ddl/comp_aout/aout_hdmi.c
index fd025c9..0f1f0e0 100644
--- a/amp/src/ddl/comp_aout/aout_hdmi.c
+++ b/amp/src/ddl/comp_aout/aout_hdmi.c
@@ -1132,8 +1132,9 @@ HRESULT Aout_SetHDMIPortFmt(HANDLE this_module, HDMI_DATA_CFG *pHdmiDataCfg, con
 #else
     if (pHdmiDataCfg->ucMode == HDMI_PCM_PRI
 #endif
-        && ppath->m_hdmi_cfg.ucMode == HDMI_RAW_MAIN)
-        bBitstream2pcm = TRUE;
+        && ppath->m_hdmi_cfg.ucMode == HDMI_RAW_MAIN){
+        bBitstream2pcm = FALSE;
+    }
 
     AmpMemcpy(&ppath->m_hdmi_cfg, pHdmiDataCfg, sizeof(HDMI_DATA_CFG));
     /* warning clear */
@@ -1411,8 +1412,9 @@ HRESULT Aout_SetHDMIPortFmt(HANDLE this_module, HDMI_DATA_CFG *pHdmiDataCfg, con
         return rc;
     }
 
-    if (bBitstream2pcm)
+    if (bBitstream2pcm) {
         Aout_WaitUnitlHDMIFormatDetectedBySink();
+    }
     return S_OK;
 }
 

(SW) Jerry Lin

2023-03-10 14:26

developer   ~0012505

Hi Sangmin,

upload to
/release_by_fxn/swan_test_image/20230310_mantis1496

Jerry

(ALTech) Sangmin Choi

2023-03-16 16:27

developer   ~0012556

Hi, Jerry,

Could you please build a test firmware after applied attached patches? SD only.

vendor/synaptics/btv-hal-impl/synaptics
BAIS2-799_stop_start_trace.patch

Thank you.
Sangmin Choi.
BAIS2-799_stop_start_trace.patch (6,220 bytes)   
commit 074ffd8673e25a74ed6fb5987b996cbefe56bd85
Author: nick yoon <nick.yoon@synaptics.com>
Date:   Thu Mar 16 15:20:31 2023 +0900

    stop / start call trace
    
    Change-Id: I35fa4979fe7049b0984571f58b7a18f43065ddeb

diff --git a/amp_wrapper.c b/amp_wrapper.c
index 9463516..6f277fa 100644
--- a/amp_wrapper.c
+++ b/amp_wrapper.c
@@ -25,6 +25,17 @@ extern "C" {
 
 #include <cutils/properties.h>
 
+struct AMP_CALL_TRACE{
+    UINT32 call_create_top;
+    UINT32 call_create_bottom;
+    UINT32 call_start;
+    UINT32 call_stop;
+    UINT32 call_destroy_bottom;
+    UINT32 call_destroy_top;
+};
+
+struct AMP_CALL_TRACE gAmpCallTrace_main, gAmpCallTrace_pip;
+
 #ifdef AMP_LOG_WRITE_FILE
 FILE *logFp[2] = { NULL, NULL };
 #endif
@@ -761,6 +772,17 @@ void amp_create_pipeline_top_half(AVP_HANDLE *player, bool isPip) {
     synaptics_player_info *socPlayerInfo = (synaptics_player_info *) player;
     ALOGD("++%s[%s][%0xd] ", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN", (unsigned int)socPlayerInfo->ampFactory);
 
+    if( !socPlayerInfo->pip ){
+        gAmpCallTrace_main.call_create_top++;
+        ALOGD("++%s[%s] create_count(%u,%u)", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN",
+                          gAmpCallTrace_main.call_create_top, gAmpCallTrace_main.call_create_top - gAmpCallTrace_main.call_destroy_top );
+    }else{
+        gAmpCallTrace_pip.call_create_top++;
+        ALOGD("++%s[%s] create_count(%u,%u)", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN",
+                          gAmpCallTrace_pip.call_create_top, gAmpCallTrace_pip.call_create_top - gAmpCallTrace_pip.call_destroy_top );
+    }
+
+
     HRESULT ret;
     AMP_COMPONENT_CONFIG amp_config;
 
@@ -985,6 +1007,16 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
     synaptics_player_info *socPlayerInfo = (synaptics_player_info *) player;
     ALOGD("++%s[%s][%0xd] ", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN", (unsigned int)socPlayerInfo->ampFactory);
 
+    if( !socPlayerInfo->pip ){
+        gAmpCallTrace_main.call_create_bottom++;
+        ALOGD("++%s[%s] create_count(%u,%u)", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN",
+                          gAmpCallTrace_main.call_create_bottom, gAmpCallTrace_main.call_create_bottom - gAmpCallTrace_main.call_destroy_bottom );
+    }else{
+        gAmpCallTrace_pip.call_create_bottom++;
+        ALOGD("++%s[%s] create_count(%u,%u)", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN",
+                          gAmpCallTrace_pip.call_create_bottom,  gAmpCallTrace_pip.call_create_bottom  - gAmpCallTrace_pip.call_destroy_bottom  );
+    }
+
     HRESULT ret;
     AMP_COMPONENT_CONFIG amp_config;
     AMP_DMX_CH_CFG output_config;
@@ -1295,6 +1327,15 @@ void amp_start_pipeline(AVP_HANDLE *player) {
     }
 
     synaptics_player_info *socPlayerInfo = (synaptics_player_info *) player;
+    if( !socPlayerInfo->pip ){
+        gAmpCallTrace_main.call_start++;
+        ALOGD("++%s[%s] start_count(%u,%u)", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN",
+                              gAmpCallTrace_main.call_start, gAmpCallTrace_main.call_start - gAmpCallTrace_main.call_stop );
+    }else{
+        gAmpCallTrace_pip.call_start++;
+        ALOGD("++%s[%s] start_count(%u,%u)", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN",
+                              gAmpCallTrace_pip.call_start,  gAmpCallTrace_pip.call_start  - gAmpCallTrace_pip.call_stop  );
+    }
     ALOGD("++%s[%s][%0xd] ", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN", (unsigned int)socPlayerInfo->ampFactory);
 
     HRESULT ret;
@@ -1505,6 +1546,17 @@ void amp_destroy_pipeline_top_half(AVP_HANDLE *player) {
     amp_log(socPlayerInfo->pip ? 1:0, "AMP_DMX_Destroy, socPlayerInfo->amp_dmx in");
     AMP_RPC(ret, AMP_DMX_Destroy, socPlayerInfo->amp_dmx);
     assert(ret == SUCCESS);
+
+    if( !socPlayerInfo->pip ){
+        gAmpCallTrace_main.call_destroy_top++;
+        ALOGD("++%s[%s] destroy_count(%u,%u)", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN",
+                          gAmpCallTrace_main.call_destroy_top, gAmpCallTrace_main.call_create_top - gAmpCallTrace_main.call_destroy_top );
+    }else{
+        gAmpCallTrace_pip.call_start++;
+        ALOGD("++%s[%s] destroy_count(%u,%u)", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN",
+                          gAmpCallTrace_pip.call_destroy_top,  gAmpCallTrace_pip.call_create_top  - gAmpCallTrace_pip.call_destroy_top  );
+    }
+
 }
 
 void amp_destroy_pipeline_bottom_half(AVP_HANDLE *player) {
@@ -1648,6 +1700,17 @@ void amp_destroy_pipeline_bottom_half(AVP_HANDLE *player) {
         assert(ret == SUCCESS);
         // <------------------------- video
     }
+
+    if( !socPlayerInfo->pip ){
+        gAmpCallTrace_main.call_destroy_bottom++;
+        ALOGD("++%s[%s] destroy_count(%u,%u)", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN",
+                          gAmpCallTrace_main.call_destroy_bottom, gAmpCallTrace_main.call_create_bottom - gAmpCallTrace_main.call_destroy_bottom );
+    }else{
+        gAmpCallTrace_pip.call_destroy_bottom++;
+        ALOGD("++%s[%s] destroy_count(%u,%u)", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN",
+                          gAmpCallTrace_pip.call_destroy_bottom,  gAmpCallTrace_pip.call_create_bottom  - gAmpCallTrace_pip.call_destroy_bottom  );
+    }
+
 }
 
 void amp_destroy_pipeline_tail(AVP_HANDLE *player) {
@@ -1742,6 +1805,16 @@ void amp_stop_pipeline(AVP_HANDLE *player) {
         assert(ret == SUCCESS);
         // <------------------------- video
     }
+
+    if( !socPlayerInfo->pip ){
+        gAmpCallTrace_main.call_stop++;
+        ALOGD("++%s[%s] stop_count(%u,%u)", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN",
+                          gAmpCallTrace_main.call_stop, gAmpCallTrace_main.call_start - gAmpCallTrace_main.call_stop );
+    }else{
+        gAmpCallTrace_pip.call_stop++;
+        ALOGD("++%s[%s] stop_count(%u,%u)", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN",
+                          gAmpCallTrace_pip.call_stop,  gAmpCallTrace_pip.call_start  - gAmpCallTrace_pip.call_stop  );
+    }
 }
 
 HRESULT amp_zapping_mgr_stop_service(AVP_HANDLE *player) {

(SW) Jerry Lin

2023-03-16 19:15

developer   ~0012558

Hi Sangmin Choi,

upload to
/release_by_fxn/swan_test_image/20230316_mantis1496

Jerry

(ALTech) Sangmin Choi

2023-03-21 14:16

developer   ~0012591

Hi, Jerry,

Could you please build a test firmware after applied attached patches? SD only.

vendor/synaptics/btv-hal-impl/synaptics
BAIS2-799_remove_amp_function_from_callback.patch

Thank you.
Sangmin Choi.
BAIS2-799_remove_amp_function_from_callback.patch (7,171 bytes)   
diff --git a/amp_wrapper.c b/amp_wrapper.c
old mode 100644
new mode 100755
index c4ce741..0a59606
--- a/amp_wrapper.c
+++ b/amp_wrapper.c
@@ -25,6 +25,17 @@ extern "C" {
 
 #include <cutils/properties.h>
 
+struct AMP_CALL_TRACE{
+    UINT32 call_create_top;
+    UINT32 call_create_bottom;
+    UINT32 call_start;
+    UINT32 call_stop;
+    UINT32 call_destroy_bottom;
+    UINT32 call_destroy_top;
+};
+
+struct AMP_CALL_TRACE gAmpCallTrace_main, gAmpCallTrace_pip;
+
 #ifdef AMP_LOG_WRITE_FILE
 FILE *logFp[2] = { NULL, NULL };
 #endif
@@ -394,9 +405,9 @@ HRESULT amp_dmx_event_handler(HANDLE hListener, AMP_EVENT *pEvent, VOID *pUserDa
             ALOGD("++amp_dmx_event_handler AMP_EVENT_DMX_INBUFF_OVERFLOW (handle=0x%x, fulness=0x%x, size=0x%x)",
                                        pBuffState->hHandle, pBuffState->uFullness, pBuffState->uSize );
 
-			amp_stop_pipeline(player);
+			//amp_stop_pipeline(player);
 
-			amp_start_pipeline(player);
+			//amp_start_pipeline(player);
 
         } break;
     case AMP_EVENT_DMX_INBUFF_UNDERFLOW:
@@ -405,8 +416,8 @@ HRESULT amp_dmx_event_handler(HANDLE hListener, AMP_EVENT *pEvent, VOID *pUserDa
            ALOGD("++amp_dmx_event_handler AMP_EVENT_DMX_INBUFF_UNDERFLOW (handle=0x%x, fulness=0x%x, size=0x%x)",
                                        pBuffState->hHandle, pBuffState->uFullness, pBuffState->uSize );
             if(socPlayerInfo->playerConfig.clock_recovery_enable == AVP_IPTV) {
-                amp_stop_pipeline(player);
-                amp_start_pipeline(player);
+                //amp_stop_pipeline(player);
+                //amp_start_pipeline(player);
             }
         } break;
     default:
@@ -763,6 +774,17 @@ void amp_create_pipeline_top_half(AVP_HANDLE *player, bool isPip) {
     synaptics_player_info *socPlayerInfo = (synaptics_player_info *) player;
     ALOGD("++%s[%s][%0xd] ", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN", (unsigned int)socPlayerInfo->ampFactory);
 
+    if( !socPlayerInfo->pip ){
+        gAmpCallTrace_main.call_create_top++;
+        ALOGD("++%s[%s] create_count(%u,%u)", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN",
+                          gAmpCallTrace_main.call_create_top, gAmpCallTrace_main.call_create_top - gAmpCallTrace_main.call_destroy_top );
+    }else{
+        gAmpCallTrace_pip.call_create_top++;
+        ALOGD("++%s[%s] create_count(%u,%u)", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN",
+                          gAmpCallTrace_pip.call_create_top, gAmpCallTrace_pip.call_create_top - gAmpCallTrace_pip.call_destroy_top );
+    }
+
+
     HRESULT ret;
     AMP_COMPONENT_CONFIG amp_config;
 
@@ -1018,6 +1040,16 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
     synaptics_player_info *socPlayerInfo = (synaptics_player_info *) player;
     ALOGD("++%s[%s][%0xd] ", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN", (unsigned int)socPlayerInfo->ampFactory);
 
+    if( !socPlayerInfo->pip ){
+        gAmpCallTrace_main.call_create_bottom++;
+        ALOGD("++%s[%s] create_count(%u,%u)", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN",
+                          gAmpCallTrace_main.call_create_bottom, gAmpCallTrace_main.call_create_bottom - gAmpCallTrace_main.call_destroy_bottom );
+    }else{
+        gAmpCallTrace_pip.call_create_bottom++;
+        ALOGD("++%s[%s] create_count(%u,%u)", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN",
+                          gAmpCallTrace_pip.call_create_bottom,  gAmpCallTrace_pip.call_create_bottom  - gAmpCallTrace_pip.call_destroy_bottom  );
+    }
+
     HRESULT ret;
     AMP_COMPONENT_CONFIG amp_config;
     AMP_DMX_CH_CFG output_config;
@@ -1328,6 +1360,15 @@ void amp_start_pipeline(AVP_HANDLE *player) {
     }
 
     synaptics_player_info *socPlayerInfo = (synaptics_player_info *) player;
+    if( !socPlayerInfo->pip ){
+        gAmpCallTrace_main.call_start++;
+        ALOGD("++%s[%s] start_count(%u,%u)", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN",
+                              gAmpCallTrace_main.call_start, gAmpCallTrace_main.call_start - gAmpCallTrace_main.call_stop );
+    }else{
+        gAmpCallTrace_pip.call_start++;
+        ALOGD("++%s[%s] start_count(%u,%u)", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN",
+                              gAmpCallTrace_pip.call_start,  gAmpCallTrace_pip.call_start  - gAmpCallTrace_pip.call_stop  );
+    }
     ALOGD("++%s[%s][%0xd] ", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN", (unsigned int)socPlayerInfo->ampFactory);
 
     HRESULT ret;
@@ -1538,6 +1579,17 @@ void amp_destroy_pipeline_top_half(AVP_HANDLE *player) {
     amp_log(socPlayerInfo->pip ? 1:0, "AMP_DMX_Destroy, socPlayerInfo->amp_dmx in");
     AMP_RPC(ret, AMP_DMX_Destroy, socPlayerInfo->amp_dmx);
     assert(ret == SUCCESS);
+
+    if( !socPlayerInfo->pip ){
+        gAmpCallTrace_main.call_destroy_top++;
+        ALOGD("++%s[%s] destroy_count(%u,%u)", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN",
+                          gAmpCallTrace_main.call_destroy_top, gAmpCallTrace_main.call_create_top - gAmpCallTrace_main.call_destroy_top );
+    }else{
+        gAmpCallTrace_pip.call_start++;
+        ALOGD("++%s[%s] destroy_count(%u,%u)", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN",
+                          gAmpCallTrace_pip.call_destroy_top,  gAmpCallTrace_pip.call_create_top  - gAmpCallTrace_pip.call_destroy_top  );
+    }
+
 }
 
 void amp_destroy_pipeline_bottom_half(AVP_HANDLE *player) {
@@ -1681,6 +1733,17 @@ void amp_destroy_pipeline_bottom_half(AVP_HANDLE *player) {
         assert(ret == SUCCESS);
         // <------------------------- video
     }
+
+    if( !socPlayerInfo->pip ){
+        gAmpCallTrace_main.call_destroy_bottom++;
+        ALOGD("++%s[%s] destroy_count(%u,%u)", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN",
+                          gAmpCallTrace_main.call_destroy_bottom, gAmpCallTrace_main.call_create_bottom - gAmpCallTrace_main.call_destroy_bottom );
+    }else{
+        gAmpCallTrace_pip.call_destroy_bottom++;
+        ALOGD("++%s[%s] destroy_count(%u,%u)", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN",
+                          gAmpCallTrace_pip.call_destroy_bottom,  gAmpCallTrace_pip.call_create_bottom  - gAmpCallTrace_pip.call_destroy_bottom  );
+    }
+
 }
 
 void amp_destroy_pipeline_tail(AVP_HANDLE *player) {
@@ -1775,6 +1838,16 @@ void amp_stop_pipeline(AVP_HANDLE *player) {
         assert(ret == SUCCESS);
         // <------------------------- video
     }
+
+    if( !socPlayerInfo->pip ){
+        gAmpCallTrace_main.call_stop++;
+        ALOGD("++%s[%s] stop_count(%u,%u)", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN",
+                          gAmpCallTrace_main.call_stop, gAmpCallTrace_main.call_start - gAmpCallTrace_main.call_stop );
+    }else{
+        gAmpCallTrace_pip.call_stop++;
+        ALOGD("++%s[%s] stop_count(%u,%u)", __FUNCTION__,  socPlayerInfo->pip ? "PIP":"MAIN",
+                          gAmpCallTrace_pip.call_stop,  gAmpCallTrace_pip.call_start  - gAmpCallTrace_pip.call_stop  );
+    }
 }
 
 HRESULT amp_zapping_mgr_stop_service(AVP_HANDLE *player) {

(SW) Jerry Lin

2023-03-21 16:14

developer   ~0012597

Hi Sangmin Choi,

upload to
/release_by_fxn/swan_test_image/20230321_mantis1496

Jerry

(ALTech) Sangmin Choi

2023-03-27 16:27

developer   ~0012652

Hi, Jerry,

Could you please build test firmwares with below repositories? SD only.

Test Firmware #1
    syna-release/ampsdk : remotes/skb/BFX-UA300_5.3.6_test_BPM-16500
    vendor/skb/prebuilts/digicap_btv-app : remotes/skb_prebuilts/BFX-UA300_5.3.6_test_BPM-16500

Test Firmware #2
    syna-release/ampsdk : remotes/skb/BFX-UA300_5.3.6_test_BPM-16500

Thank you.
Sangmin Choi.

(SW) Jerry Lin

2023-03-27 17:13

developer   ~0012656

Hi Sangmin Choi.
Please help to confirm "vendor/skb/prebuilts/digicap_btv-app : remotes/skb_prebuilts/BFX-UA300_5.3.6_test_BPM-16500"
I can not find this branch.

Jerry

(SW) Jerry Lin

2023-03-27 20:07

developer   ~0012658

Hi Sangmin Choi,

upload to
/release_by_fxn/swan_test_image/20230327_mantis1496

Jerry

(ALTech) Sangmin Choi

2023-03-28 10:05

developer   ~0012660

Hi, Jerry,

SKB told me following commit should be added to test firmware.
So, I pushed it to BFX-UA300_5.3.6_test_BPM-16500 branch.

commit 0a4750dfbf5c653a0f9f9e8a3ffab9fe7ad6acb2 (HEAD -> BFX-UA300_5.3.6_test_BPM-16500, skb/BFX-UA300_5.3.6_test_BPM-16500)
Author: Jason Ling <jason.tf.ling@fii-foxconn.com>
Date: Mon Mar 27 17:10:04 2023 +0800

    [BAIS2-801] Adjust STC offset to prevent Audio drop for the case there is big PTS gab between Audio and Video

Could you please build test firmwares again with below repositories? SD only.

Test Firmware #1
    syna-release/ampsdk : remotes/skb/BFX-UA300_5.3.6_test_BPM-16500
    vendor/skb/prebuilts/digicap_btv-app : remotes/skb_prebuilts/BFX-UA300_5.3.6_test_BPM-16500

Test Firmware #2
    syna-release/ampsdk : remotes/skb/BFX-UA300_5.3.6_test_BPM-16500

Thank you.
Sangmin Choi.

(ALTech) Sangmin Choi

2023-04-05 13:12

developer   ~0012721

Hello, Jerry,

Could you please build a test firmware after applied attached patches? SD only.

syna-release/osal
enable_log_timeout.patch

Thank you.
Sangmin Choi.
enable_log_timeout.patch (1,296 bytes)   
diff --git a/osal/alcore/mbuf.c b/osal/alcore/mbuf.c
index 0cc8054..f540bf9 100644
--- a/osal/alcore/mbuf.c
+++ b/osal/alcore/mbuf.c
@@ -55,7 +55,7 @@
 #define LOG_TAG "MBUF"
 #include <log/log.h>
 #define MBUF_ERR(...)	ALOGE(__VA_ARGS__)
-#define MBUF_DBG(...)	//ALOGD(## __VA_ARGS__)
+#define MBUF_DBG(...)	ALOGD(__VA_ARGS__)
 #else
 #define MBUF_ERR(...)	printf( __VA_ARGS__)
 #define MBUF_DBG(...)	//printf( __VA_ARGS__)
@@ -242,9 +242,9 @@ static void *socket_func(void * arg)
 		if (timeout_flag == 0 && num == 0)
 			pthread_cond_wait(&thread->cond, &thread->mutex);
 
-		if (thread->exit_flag == 1) {
-			MBUF_DBG("%s line:%d will exit\n",
-				__func__, __LINE__);
+		if (thread->exit_flag == 1 || timeout_flag > 2) {
+			MBUF_DBG("%s line:%d will exit (%d)\n",
+				__func__, __LINE__, timeout_flag);
 			if (fds != NULL)
 				free(fds);
 			pthread_mutex_unlock(&thread->mutex);
@@ -289,9 +289,9 @@ static void *socket_func(void * arg)
 				 __LINE__, errno, strerror(errno));
 			assert(0);
 		} else if (ret == 0) {
-			MBUF_DBG("%s line:%d poll time out\n",
-				__func__, __LINE__);
-			timeout_flag = 1;
+			MBUF_DBG("%s line:%d poll time out %dth\n",
+				__func__, __LINE__, timeout_flag);
+			timeout_flag++;
 			continue;
 		} else {
 			MBUF_DBG("%s line:%d poll ok [%d]\n",
enable_log_timeout.patch (1,296 bytes)   

(SW) Jerry Lin

2023-04-05 14:58

developer   ~0012722

Hi Sangmin Choi,

upload to
/release_by_fxn/swan_test_image/20230405_mantis1496

Jerry

(ALTech) Sangmin Choi

2023-04-06 10:47

developer   ~0012737

Hello, Jerry,

Could you please build a test firmware after applied attached patches? SD only.

syna-release/osal
remove_mbuf_from_osal.patch

Of course you always revert all modifications before build,
but could you please check one more time the patch I asked yesterday(enable_log_timeout.patch) reverted?.

Thank you.
Sangmin Choi.
remove_mbuf_from_osal.patch (842 bytes)   
diff --git a/osal/alcore/OSAL.c b/osal/alcore/OSAL.c
index bd37619..4be98f8 100644
--- a/osal/alcore/OSAL.c
+++ b/osal/alcore/OSAL.c
@@ -58,6 +58,11 @@
 #include "CC_socket.h"
 #include "ion.h"
 
+#if defined(ANDROID) || defined(LOGCAT)
+#define LOG_TAG "MV_OSAL"
+#include <log/log.h>
+#endif
+
 #ifdef ENABLE_SYSMON
 
 extern HRESULT MV_MON_Init();
@@ -169,9 +174,11 @@ HRESULT  MV_OSAL_Init()
 	if (res != S_OK)
 		goto init_exit;
 
-	res = MV_MBUF_Init();
+        ALOGD("MV_OSAL_Init ignore MBUF_Init");
+/*	res = MV_MBUF_Init();
 	if (res != S_OK)
 		goto init_exit;
+*/
 init_exit:
 	pthread_mutex_unlock(&osal_init_mutex);
 	return res;
@@ -227,7 +234,8 @@ HRESULT  MV_OSAL_Exit()
 
 	ion_release();
 
-	MV_MBUF_Exit();
+        ALOGD("MV_OSAL_Exit ignore MBUF_Exit");
+//	MV_MBUF_Exit();
 
 	res = MV_Time_Exit();
 	if (res != S_OK)
remove_mbuf_from_osal.patch (842 bytes)   

(ALTech) Sangmin Choi

2023-04-06 18:33

developer   ~0012748

Hello, Jerry,

Did you clean the syna-release?
The firmware you uploaded didn't print debug messages in patch.

I built the ND image after apply remove_mbuf_from_osal.patch, I can see the following messages from booting or enter the Home menu.

04-06 19:29:46.631 android.hardware.drm@1.2-service.widevine 399 484 D MV_OSAL MV_OSAL_Init ignore MBUF_Init
04-06 19:29:46.752 android.hardware.drm@1.2-service.widevine 399 484 D MV_OSAL MV_OSAL_Exit ignore MBUF_Exit
04-06 19:29:46.765 android.hardware.drm@1.2-service.widevine 399 484 D MV_OSAL MV_OSAL_Init ignore MBUF_Init
04-06 19:29:46.857 android.hardware.drm@1.2-service.widevine 399 484 D MV_OSAL MV_OSAL_Exit ignore MBUF_Exit
04-06 19:29:46.935 android.hardware.drm@1.2-service.widevine 399 484 D MV_OSAL MV_OSAL_Init ignore MBUF_Init
04-06 19:29:47.062 android.hardware.drm@1.2-service.widevine 399 484 D MV_OSAL MV_OSAL_Exit ignore MBUF_Exit

Could you please check it and rebuild test firmware?

Thank you.
Sangmin Choi.

(ALTech) Sangmin Choi

2023-04-07 11:38

developer   ~0012756

Hi, Jerry,

I'm so sorry, I gave you wrong guide.

This patch should be applied to syna-release/ampsdk.

I will find a way to avoid this kind of wrong direction.

Could you please build a test firmware again?

Thank you.
Sangmin Choi.

(SW) Jerry Lin

2023-04-07 13:40

developer   ~0012757

Hi Sangmin Choi,

upload to
/release_by_fxn/swan_test_image/20230407_mantis1496

Jerry

(ALTech) Sangmin Choi

2023-04-07 15:03

developer   ~0012758

Hi, Jerry,

I checked the debug messages are printed successfully.

Thank you.
Sangmin Choi.

(ALTech) Sangmin Choi

2023-04-20 09:42

developer   ~0012923

Hi, Jerry,

Could you please build test firmwares again with below repositories? SD only.

syna-release/ampsdk : remotes/skb/BFX-UA300_5.3.6_test_BPM-16500
vendor/skb/prebuilts/digicap_btv-app : remotes/skb_prebuilts/BFX-UA300_5.3.6_test_BPM-16500

Thank you.
Sangmin Choi.

(ALTech) Sangmin Choi

2023-04-20 11:05

developer   ~0012926

Hi, Jerry,

Could you please build a test firmware after applied attached library? SD only.

vendor/skb/prebuilts/skp_rtsp
libskbrtsp.so

This test firmware should be built under BFX-UA300_5.3.6 repositories.
Please be careful with previous test firmware.(#c12923)

Thank you.
Sangmin Choi.
libskbrtsp.so (51,020 bytes)

(SW) Jerry Lin

2023-04-20 16:26

developer   ~0012935

Hi Sangmin Choi,

upload to
/release_by_fxn/swan_test_image/20230420_mantis1496

Jerry

(ALTech) Sangmin Choi

2023-05-10 15:29

developer   ~0013089

Hello, Jerry,

Could you please build a test firmware after applied attached patches? SD only.

syna-release/ampsdk
0001-add_debug_message_in_AMP_ConnectComp.patch

Thank you.
Sangmin Choi.
0001-add_debug_message_in_AMP_ConnectComp.patch (718 bytes)   
diff --git a/amp/src/aal/amp_client_misc.c b/amp/src/aal/amp_client_misc.c
index 9a82655..d8f4133 100755
--- a/amp/src/aal/amp_client_misc.c
+++ b/amp/src/aal/amp_client_misc.c
@@ -493,6 +493,9 @@ HRESULT AMP_ConnectComp(AMP_COMPONENT hUpCompObj, UINT32 uiUpPortIdx,
             uiUpPortIdx, &port_conn);
     if (result != SUCCESS) {
         /* Clean downstream component setup before */
+        FWLOGE("result : 0x%x", result);
+        FWLOGE("hDownCompObj : 0x%x", hDownCompObj);
+        FWLOGE("uiDownPortIdx : 0x%x", uiDownPortIdx);
         AMP_RPC(result, AMP_COMPONENT_ClearPort, hDownCompObj, AMP_PORT_INPUT,
                 uiDownPortIdx);
         FWLOGE("Setup upstream port fail! %d", uiUpPortIdx);

(SW) Jerry Lin

2023-05-10 18:45

developer   ~0013091

Hi Sangmin Choi,

upload to
/release_by_fxn/swan_test_image/20230510_mantis1496

Jerry

(ALTech) Sangmin Choi

2023-05-15 10:25

developer   ~0013119

Hi, Jerry,

Could you please build test firmwares again with below repositories? SD only.

syna-release/ampsdk : remotes/skb/BFX-UA300_5.3.6_test_CSMSKBSBLT-211
vendor/synaptics/vsxxx : remotes/skb/BFX-UA300_5.3.6_test_CSMSKBSBLT-211

Thank you.
Sangmin Choi.

(SW) Jerry Lin

2023-05-15 11:05

developer   ~0013121

Hi Sangmin Choi,
Ok.
If the test FW upload is completed , i wll notify you.

Thanks.
Jerry

(SW) Jerry Lin

2023-05-15 15:04

developer   ~0013129

Hi Sangmin Choi,

upload to
/release_by_fxn/swan_test_image/20230515_mantis1496

Jerry

(ALTech) Sangmin Choi

2023-05-16 14:56

developer   ~0013142

Hello, Jerry,

Could you please build a test firmware after applied attached patches? ND and SD.

syna-release/linux_4_9_q
SKBSBLT-215-test.patch

Thank you.
Sangmin Choi.
SKBSBLT-215-test.patch (33,221 bytes)   
diff --git a/arch/arm64/kernel/armv8_deprecated.c b/arch/arm64/kernel/armv8_deprecated.c
index 29d2ad8..0f7de61 100644
--- a/arch/arm64/kernel/armv8_deprecated.c
+++ b/arch/arm64/kernel/armv8_deprecated.c
@@ -63,6 +63,7 @@ struct insn_emulation {
 static LIST_HEAD(insn_emulation);
 static int nr_insn_emulated __initdata;
 static DEFINE_RAW_SPINLOCK(insn_emulation_lock);
+static DEFINE_MUTEX(insn_emulation_mutex);
 
 static void register_emulation_hooks(struct insn_emulation_ops *ops)
 {
@@ -208,10 +209,10 @@ static int emulation_proc_handler(struct ctl_table *table, int write,
 				  loff_t *ppos)
 {
 	int ret = 0;
-	struct insn_emulation *insn = (struct insn_emulation *) table->data;
+	struct insn_emulation *insn = container_of(table->data, struct insn_emulation, current_mode);
 	enum insn_emulation_mode prev_mode = insn->current_mode;
 
-	table->data = &insn->current_mode;
+	mutex_lock(&insn_emulation_mutex);
 	ret = proc_dointvec_minmax(table, write, buffer, lenp, ppos);
 
 	if (ret || !write || prev_mode == insn->current_mode)
@@ -224,7 +225,7 @@ static int emulation_proc_handler(struct ctl_table *table, int write,
 		update_insn_emulation_mode(insn, INSN_UNDEF);
 	}
 ret:
-	table->data = insn;
+	mutex_unlock(&insn_emulation_mutex);
 	return ret;
 }
 
@@ -254,7 +255,7 @@ static void __init register_insn_emulation_sysctl(struct ctl_table *table)
 		sysctl->maxlen = sizeof(int);
 
 		sysctl->procname = insn->ops->name;
-		sysctl->data = insn;
+		sysctl->data = &insn->current_mode;
 		sysctl->extra1 = &insn->min;
 		sysctl->extra2 = &insn->max;
 		sysctl->proc_handler = emulation_proc_handler;
diff --git a/drivers/android/binder.c b/drivers/android/binder.c
index 3eada68..fbd6add 100644
--- a/drivers/android/binder.c
+++ b/drivers/android/binder.c
@@ -505,6 +505,9 @@ struct binder_priority {
  * @files                 files_struct for process
  *                        (protected by @files_lock)
  * @files_lock            mutex to protect @files
+ * @cred                  struct cred associated with the `struct file`
+ *                        in binder_open()
+ *                        (invariant after initialized)
  * @deferred_work_node:   element for binder_deferred_list
  *                        (protected by binder_deferred_lock)
  * @deferred_work:        bitmap of deferred work to perform
@@ -551,6 +554,7 @@ struct binder_proc {
 	struct task_struct *tsk;
 	struct files_struct *files;
 	struct mutex files_lock;
+	const struct cred *cred;
 	struct hlist_node deferred_work_node;
 	int deferred_work;
 	bool is_dead;
@@ -2007,6 +2011,18 @@ static int binder_inc_ref_for_node(struct binder_proc *proc,
 	}
 	ret = binder_inc_ref_olocked(ref, strong, target_list);
 	*rdata = ref->data;
+	if (ret && ref == new_ref) {
+		/*
+		 * Cleanup the failed reference here as the target
+		 * could now be dead and have already released its
+		 * references by now. Calling on the new reference
+		 * with strong=0 and a tmp_refs will not decrement
+		 * the node. The new_ref gets kfree'd below.
+		 */
+		binder_cleanup_ref_olocked(new_ref);
+		ref = NULL;
+	}
+
 	binder_proc_unlock(proc);
 	if (new_ref && ref != new_ref)
 		/*
@@ -2585,7 +2601,7 @@ static int binder_translate_binder(struct flat_binder_object *fp,
 		ret = -EINVAL;
 		goto done;
 	}
-	if (security_binder_transfer_binder(proc->tsk, target_proc->tsk)) {
+	if (security_binder_transfer_binder(proc->cred, target_proc->cred)) {
 		ret = -EPERM;
 		goto done;
 	}
@@ -2631,7 +2647,7 @@ static int binder_translate_handle(struct flat_binder_object *fp,
 				  proc->pid, thread->pid, fp->handle);
 		return -EINVAL;
 	}
-	if (security_binder_transfer_binder(proc->tsk, target_proc->tsk)) {
+	if (security_binder_transfer_binder(proc->cred, target_proc->cred)) {
 		ret = -EPERM;
 		goto done;
 	}
@@ -2715,7 +2731,7 @@ static int binder_translate_fd(int fd,
 		ret = -EBADF;
 		goto err_fget;
 	}
-	ret = security_binder_transfer_file(proc->tsk, target_proc->tsk, file);
+	ret = security_binder_transfer_file(proc->cred, target_proc->cred, file);
 	if (ret < 0) {
 		ret = -EPERM;
 		goto err_security;
@@ -3120,8 +3136,8 @@ static void binder_transaction(struct binder_proc *proc,
 			goto err_dead_binder;
 		}
 		e->to_node = target_node->debug_id;
-		if (security_binder_transaction(proc->tsk,
-						target_proc->tsk) < 0) {
+		if (security_binder_transaction(proc->cred,
+						target_proc->cred) < 0) {
 			return_error = BR_FAILED_REPLY;
 			return_error_param = -EPERM;
 			return_error_line = __LINE__;
@@ -4670,6 +4686,7 @@ static void binder_free_proc(struct binder_proc *proc)
 	BUG_ON(!list_empty(&proc->delivered_death));
 	binder_alloc_deferred_release(&proc->alloc);
 	put_task_struct(proc->tsk);
+	put_cred(proc->cred);
 	binder_stats_deleted(BINDER_STAT_PROC);
 	kfree(proc);
 }
@@ -4875,7 +4892,7 @@ static int binder_ioctl_set_ctx_mgr(struct file *filp,
 		ret = -EBUSY;
 		goto out;
 	}
-	ret = security_binder_set_context_mgr(proc->tsk);
+	ret = security_binder_set_context_mgr(proc->cred);
 	if (ret < 0)
 		goto out;
 	if (uid_valid(context->binder_context_mgr_uid)) {
@@ -5196,6 +5213,7 @@ static int binder_open(struct inode *nodp, struct file *filp)
 	get_task_struct(current->group_leader);
 	proc->tsk = current->group_leader;
 	mutex_init(&proc->files_lock);
+	proc->cred = get_cred(filp->f_cred);
 	INIT_LIST_HEAD(&proc->todo);
 	if (binder_supported_policy(current->policy)) {
 		proc->default_priority.sched_policy = current->policy;
diff --git a/drivers/staging/android/ion/ion-ioctl.c b/drivers/staging/android/ion/ion-ioctl.c
index e359685..a27865b 100644
--- a/drivers/staging/android/ion/ion-ioctl.c
+++ b/drivers/staging/android/ion/ion-ioctl.c
@@ -30,6 +30,69 @@ union ion_ioctl_arg {
 	struct ion_heap_query query;
 };
 
+/* Must hold the client lock */
+static void user_ion_handle_get(struct ion_handle *handle)
+{
+	if (handle->user_ref_count++ == 0)
+		kref_get(&handle->ref);
+}
+
+/* Must hold the client lock */
+static struct ion_handle *user_ion_handle_get_check_overflow(
+	struct ion_handle *handle)
+{
+	if (handle->user_ref_count + 1 == 0)
+		return ERR_PTR(-EOVERFLOW);
+	user_ion_handle_get(handle);
+	return handle;
+}
+
+/* passes a kref to the user ref count.
+ * We know we're holding a kref to the object before and
+ * after this call, so no need to reverify handle.
+ */
+static struct ion_handle *pass_to_user(struct ion_handle *handle)
+{
+	struct ion_client *client = handle->client;
+	struct ion_handle *ret;
+
+	mutex_lock(&client->lock);
+	ret = user_ion_handle_get_check_overflow(handle);
+	ion_handle_put_nolock(handle);
+	mutex_unlock(&client->lock);
+	return ret;
+}
+
+/* Must hold the client lock */
+static int user_ion_handle_put_nolock(struct ion_handle *handle)
+{
+	int ret;
+
+	if (--handle->user_ref_count == 0)
+		ret = ion_handle_put_nolock(handle);
+
+	return ret;
+}
+
+static void user_ion_free_nolock(struct ion_client *client,
+				 struct ion_handle *handle)
+{
+	bool valid_handle;
+
+	WARN_ON(client != handle->client);
+
+	valid_handle = ion_handle_validate(client, handle);
+	if (!valid_handle) {
+		WARN(1, "%s: invalid handle passed to free.\n", __func__);
+		return;
+	}
+	if (handle->user_ref_count == 0) {
+		WARN(1, "%s: User does not have access!\n", __func__);
+		return;
+	}
+	user_ion_handle_put_nolock(handle);
+}
+
 static int validate_ioctl_arg(unsigned int cmd, union ion_ioctl_arg *arg)
 {
 	int ret = 0;
@@ -96,16 +159,15 @@ long ion_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
 	{
 		struct ion_handle *handle;
 
-		handle = ion_alloc(client, data.allocation.len,
-						data.allocation.align,
-						data.allocation.heap_id_mask,
-						data.allocation.flags);
+		handle = __ion_alloc(client, data.allocation.len,
+				     data.allocation.align,
+				     data.allocation.heap_id_mask,
+				     data.allocation.flags, true);
 		if (IS_ERR(handle))
 			return PTR_ERR(handle);
-
 		data.allocation.handle = handle->id;
-
 		cleanup_handle = handle;
+		pass_to_user(handle);
 		break;
 	}
 	case ION_IOC_FREE:
@@ -118,7 +180,7 @@ long ion_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
 			mutex_unlock(&client->lock);
 			return PTR_ERR(handle);
 		}
-		ion_free_nolock(client, handle);
+		user_ion_free_nolock(client, handle);
 		ion_handle_put_nolock(handle);
 		mutex_unlock(&client->lock);
 		break;
@@ -146,10 +208,16 @@ long ion_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
 		struct ion_handle *handle;
 
 		handle = ion_import_dma_buf_fd(client, data.fd.fd);
-		if (IS_ERR(handle))
+		if (IS_ERR(handle)) {
 			ret = PTR_ERR(handle);
-		else
+		} else {
 			data.handle.handle = handle->id;
+			handle = pass_to_user(handle);
+			if (IS_ERR(handle)) {
+				ret = PTR_ERR(handle);
+				data.handle.handle = 0;
+			}
+		}
 		break;
 	}
 	case ION_IOC_SYNC:
@@ -174,10 +242,16 @@ long ion_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
 
 	if (dir & _IOC_READ) {
 		if (copy_to_user((void __user *)arg, &data, _IOC_SIZE(cmd))) {
-			if (cleanup_handle)
-				ion_free(client, cleanup_handle);
+			if (cleanup_handle) {
+				mutex_lock(&client->lock);
+				user_ion_free_nolock(client, cleanup_handle);
+				ion_handle_put_nolock(cleanup_handle);
+				mutex_unlock(&client->lock);
+			}
 			return -EFAULT;
 		}
 	}
+	if (cleanup_handle)
+		ion_handle_put(cleanup_handle);
 	return ret;
 }
diff --git a/drivers/staging/android/ion/ion.c b/drivers/staging/android/ion/ion.c
index 3787405..b5784a6 100644
--- a/drivers/staging/android/ion/ion.c
+++ b/drivers/staging/android/ion/ion.c
@@ -404,8 +404,8 @@ struct ion_handle *ion_handle_get_by_id_nolock(struct ion_client *client,
 	return ERR_PTR(-EINVAL);
 }
 
-static bool ion_handle_validate(struct ion_client *client,
-				struct ion_handle *handle)
+bool ion_handle_validate(struct ion_client *client,
+			 struct ion_handle *handle)
 {
 	WARN_ON(!mutex_is_locked(&client->lock));
 	return idr_find(&client->idr, handle->id) == handle;
@@ -504,9 +504,9 @@ static int ion_shrink(struct ion_heap *heap, int kill_adj)
 	return -EAGAIN;
 }
 
-struct ion_handle *ion_alloc(struct ion_client *client, size_t len,
-			     size_t align, unsigned int heap_id_mask,
-			     unsigned int flags)
+struct ion_handle *__ion_alloc(struct ion_client *client, size_t len,
+			       size_t align, unsigned int heap_id_mask,
+			       unsigned int flags, bool grab_handle)
 {
 	struct ion_handle *handle;
 	struct ion_device *dev = client->dev;
@@ -573,6 +573,8 @@ struct ion_handle *ion_alloc(struct ion_client *client, size_t len,
 		return handle;
 
 	mutex_lock(&client->lock);
+	if (grab_handle)
+		ion_handle_get(handle);
 	ret = ion_handle_add(client, handle);
 	mutex_unlock(&client->lock);
 	if (ret) {
@@ -582,6 +584,13 @@ struct ion_handle *ion_alloc(struct ion_client *client, size_t len,
 
 	return handle;
 }
+
+struct ion_handle *ion_alloc(struct ion_client *client, size_t len,
+			     size_t align, unsigned int heap_id_mask,
+			     unsigned int flags)
+{
+	return __ion_alloc(client, len, align, heap_id_mask, flags, false);
+}
 EXPORT_SYMBOL(ion_alloc);
 
 void ion_free_nolock(struct ion_client *client,
@@ -1119,42 +1128,45 @@ static void ion_dma_buf_release(struct dma_buf *dmabuf)
 static void *ion_dma_buf_kmap(struct dma_buf *dmabuf, unsigned long offset)
 {
 	struct ion_buffer *buffer = dmabuf->priv;
+	void *vaddr;
+
+	if (!buffer->heap->ops->map_kernel) {
+		pr_err("%s: map kernel is not implemented by this heap.\n",
+		       __func__);
+		return ERR_PTR(-ENOTTY);
+	}
+	mutex_lock(&buffer->lock);
+	vaddr = ion_buffer_kmap_get(buffer);
+	mutex_unlock(&buffer->lock);
+
+	if (IS_ERR(vaddr))
+		return vaddr;
 
-	return buffer->vaddr + offset * PAGE_SIZE;
+	return vaddr + offset * PAGE_SIZE;
 }
 
 static void ion_dma_buf_kunmap(struct dma_buf *dmabuf, unsigned long offset,
 			       void *ptr)
 {
+	struct ion_buffer *buffer = dmabuf->priv;
+
+	if (buffer->heap->ops->map_kernel) {
+		mutex_lock(&buffer->lock);
+		ion_buffer_kmap_put(buffer);
+		mutex_unlock(&buffer->lock);
+	}
+
 }
 
 static int ion_dma_buf_begin_cpu_access(struct dma_buf *dmabuf,
 					enum dma_data_direction direction)
 {
-	struct ion_buffer *buffer = dmabuf->priv;
-	void *vaddr;
-
-	if (!buffer->heap->ops->map_kernel) {
-		pr_err("%s: map kernel is not implemented by this heap.\n",
-		       __func__);
-		return -ENODEV;
-	}
-
-	mutex_lock(&buffer->lock);
-	vaddr = ion_buffer_kmap_get(buffer);
-	mutex_unlock(&buffer->lock);
-	return PTR_ERR_OR_ZERO(vaddr);
+	return 0;
 }
 
 static int ion_dma_buf_end_cpu_access(struct dma_buf *dmabuf,
 				      enum dma_data_direction direction)
 {
-	struct ion_buffer *buffer = dmabuf->priv;
-
-	mutex_lock(&buffer->lock);
-	ion_buffer_kmap_put(buffer);
-	mutex_unlock(&buffer->lock);
-
 	return 0;
 }
 
diff --git a/drivers/staging/android/ion/ion.h b/drivers/staging/android/ion/ion.h
index 7c982e1..6c309f8 100644
--- a/drivers/staging/android/ion/ion.h
+++ b/drivers/staging/android/ion/ion.h
@@ -113,6 +113,10 @@ struct ion_handle *ion_alloc(struct ion_client *client, size_t len,
 			     size_t align, unsigned int heap_id_mask,
 			     unsigned int flags);
 
+struct ion_handle *__ion_alloc(struct ion_client *client, size_t len,
+			       size_t align, unsigned int heap_id_mask,
+			       unsigned int flags, bool grab_handle);
+
 /**
  * ion_free - free a handle
  * @client:	the client
diff --git a/drivers/staging/android/ion/ion_priv.h b/drivers/staging/android/ion/ion_priv.h
index a6f1d2e..6db71a5 100644
--- a/drivers/staging/android/ion/ion_priv.h
+++ b/drivers/staging/android/ion/ion_priv.h
@@ -154,6 +154,7 @@ struct ion_client {
  */
 struct ion_handle {
 	struct kref ref;
+	unsigned int user_ref_count;
 	struct ion_client *client;
 	struct ion_buffer *buffer;
 	struct rb_node node;
@@ -492,6 +493,9 @@ int ion_sync_for_device(struct ion_client *client, int fd);
 struct ion_handle *ion_handle_get_by_id_nolock(struct ion_client *client,
 						int id);
 
+bool ion_handle_validate(struct ion_client *client,
+			 struct ion_handle *handle);
+
 void ion_free_nolock(struct ion_client *client, struct ion_handle *handle);
 
 int ion_handle_put_nolock(struct ion_handle *handle);
diff --git a/fs/block_dev.c b/fs/block_dev.c
index 8a894cd..b1e9f70 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -1255,10 +1255,8 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
 	 */
 	if (!for_part) {
 		ret = devcgroup_inode_permission(bdev->bd_inode, perm);
-		if (ret != 0) {
-			bdput(bdev);
+		if (ret != 0) 
 			return ret;
-		}
 	}
 
  restart:
@@ -1330,8 +1328,10 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
 				goto out_clear;
 			BUG_ON(for_part);
 			ret = __blkdev_get(whole, mode, 1);
-			if (ret)
+			if (ret) {
+				bdput(whole);
 				goto out_clear;
+			}
 			bdev->bd_contains = whole;
 			bdev->bd_part = disk_get_part(disk, partno);
 			if (!(disk->flags & GENHD_FL_UP) ||
@@ -1382,7 +1382,6 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
 	put_disk(disk);
 	module_put(owner);
  out:
-	bdput(bdev);
 
 	return ret;
 }
@@ -1468,6 +1467,10 @@ int blkdev_get(struct block_device *bdev, fmode_t mode, void *holder)
 		bdput(whole);
 	}
 
+	if (res)
+		bdput(bdev);
+
+
 	return res;
 }
 EXPORT_SYMBOL(blkdev_get);
diff --git a/fs/eventpoll.c b/fs/eventpoll.c
index a107a26..ede9e17 100644
--- a/fs/eventpoll.c
+++ b/fs/eventpoll.c
@@ -1340,6 +1340,22 @@ static int ep_insert(struct eventpoll *ep, struct epoll_event *event,
 		RCU_INIT_POINTER(epi->ws, NULL);
 	}
 
+	/* Add the current item to the list of active epoll hook for this file */
+	spin_lock(&tfile->f_lock);
+	list_add_tail_rcu(&epi->fllink, &tfile->f_ep_links);
+	spin_unlock(&tfile->f_lock);
+
+	/*
+	 * Add the current item to the RB tree. All RB tree operations are
+	 * protected by "mtx", and ep_insert() is called with "mtx" held.
+	 */
+	ep_rbtree_insert(ep, epi);
+
+	/* now check if we've created too many backpaths */
+	error = -EINVAL;
+	if (full_check && reverse_path_check())
+		goto error_remove_epi;
+
 	/* Initialize the poll table using the queue callback */
 	epq.epi = epi;
 	init_poll_funcptr(&epq.pt, ep_ptable_queue_proc);
@@ -1362,22 +1378,6 @@ static int ep_insert(struct eventpoll *ep, struct epoll_event *event,
 	if (epi->nwait < 0)
 		goto error_unregister;
 
-	/* Add the current item to the list of active epoll hook for this file */
-	spin_lock(&tfile->f_lock);
-	list_add_tail_rcu(&epi->fllink, &tfile->f_ep_links);
-	spin_unlock(&tfile->f_lock);
-
-	/*
-	 * Add the current item to the RB tree. All RB tree operations are
-	 * protected by "mtx", and ep_insert() is called with "mtx" held.
-	 */
-	ep_rbtree_insert(ep, epi);
-
-	/* now check if we've created too many backpaths */
-	error = -EINVAL;
-	if (full_check && reverse_path_check())
-		goto error_remove_epi;
-
 	/* We have to drop the new item inside our item list to keep track of it */
 	spin_lock_irqsave(&ep->lock, flags);
 
@@ -1403,6 +1403,8 @@ static int ep_insert(struct eventpoll *ep, struct epoll_event *event,
 
 	return 0;
 
+error_unregister:
+	ep_unregister_pollwait(ep, epi);
 error_remove_epi:
 	spin_lock(&tfile->f_lock);
 	list_del_rcu(&epi->fllink);
@@ -1410,9 +1412,6 @@ static int ep_insert(struct eventpoll *ep, struct epoll_event *event,
 
 	rb_erase(&epi->rbn, &ep->rbr);
 
-error_unregister:
-	ep_unregister_pollwait(ep, epi);
-
 	/*
 	 * We need to do this because an event could have been arrived on some
 	 * allocated wait queue. Note that we don't care about the ep->ovflist
diff --git a/fs/signalfd.c b/fs/signalfd.c
index 270221f..9c5fa0a 100644
--- a/fs/signalfd.c
+++ b/fs/signalfd.c
@@ -34,17 +34,7 @@
 
 void signalfd_cleanup(struct sighand_struct *sighand)
 {
-	wait_queue_head_t *wqh = &sighand->signalfd_wqh;
-	/*
-	 * The lockless check can race with remove_wait_queue() in progress,
-	 * but in this case its caller should run under rcu_read_lock() and
-	 * sighand_cachep is SLAB_DESTROY_BY_RCU, we can safely return.
-	 */
-	if (likely(!waitqueue_active(wqh)))
-		return;
-
-	/* wait_queue_t->func(POLLFREE) should do remove_wait_queue() */
-	wake_up_poll(wqh, POLLHUP | POLLFREE);
+	wake_up_pollfree(&sighand->signalfd_wqh);
 }
 
 struct signalfd_ctx {
diff --git a/include/linux/lsm_hooks.h b/include/linux/lsm_hooks.h
index 121f2f2..b78a660 100644
--- a/include/linux/lsm_hooks.h
+++ b/include/linux/lsm_hooks.h
@@ -1147,22 +1147,22 @@
  *
  * @binder_set_context_mgr
  *	Check whether @mgr is allowed to be the binder context manager.
- *	@mgr contains the task_struct for the task being registered.
+ *	@mgr contains the struct cred for the current binder process.
  *	Return 0 if permission is granted.
  * @binder_transaction
  *	Check whether @from is allowed to invoke a binder transaction call
  *	to @to.
- *	@from contains the task_struct for the sending task.
- *	@to contains the task_struct for the receiving task.
- * @binder_transfer_binder
+ *	@from contains the struct cred for the sending process.
+ *	@to contains the struct cred for the receiving process.
+ * @binder_transfer_binder:
  *	Check whether @from is allowed to transfer a binder reference to @to.
- *	@from contains the task_struct for the sending task.
- *	@to contains the task_struct for the receiving task.
- * @binder_transfer_file
+ *	@from contains the struct cred for the sending process.
+ *	@to contains the struct cred for the receiving process.
+ * @binder_transfer_file:
  *	Check whether @from is allowed to transfer @file to @to.
- *	@from contains the task_struct for the sending task.
+ *	@from contains the struct cred for the sending process.
  *	@file contains the struct file being transferred.
- *	@to contains the task_struct for the receiving task.
+ *	@to contains the struct cred for the receiving process.
  *
  * @ptrace_access_check:
  *	Check permission before allowing the current process to trace the
@@ -1365,13 +1365,13 @@
  */
 
 union security_list_options {
-	int (*binder_set_context_mgr)(struct task_struct *mgr);
-	int (*binder_transaction)(struct task_struct *from,
-					struct task_struct *to);
-	int (*binder_transfer_binder)(struct task_struct *from,
-					struct task_struct *to);
-	int (*binder_transfer_file)(struct task_struct *from,
-					struct task_struct *to,
+	int (*binder_set_context_mgr)(const struct cred *mgr);
+	int (*binder_transaction)(const struct cred *from,
+					const struct cred *to);
+	int (*binder_transfer_binder)(const struct cred *from,
+					const struct cred *to);
+	int (*binder_transfer_file)(const struct cred *from,
+					const struct cred *to,
 					struct file *file);
 
 	int (*ptrace_access_check)(struct task_struct *child,
diff --git a/include/linux/security.h b/include/linux/security.h
index 3632428..93ff8c3 100644
--- a/include/linux/security.h
+++ b/include/linux/security.h
@@ -184,13 +184,13 @@ static inline void security_free_mnt_opts(struct security_mnt_opts *opts)
 extern int security_init(void);
 
 /* Security operations */
-int security_binder_set_context_mgr(struct task_struct *mgr);
-int security_binder_transaction(struct task_struct *from,
-				struct task_struct *to);
-int security_binder_transfer_binder(struct task_struct *from,
-				    struct task_struct *to);
-int security_binder_transfer_file(struct task_struct *from,
-				  struct task_struct *to, struct file *file);
+int security_binder_set_context_mgr(const struct cred *mgr);
+int security_binder_transaction(const struct cred *from,
+				const struct cred *to);
+int security_binder_transfer_binder(const struct cred *from,
+				    const struct cred *to);
+int security_binder_transfer_file(const struct cred *from,
+				  const struct cred *to, struct file *file);
 int security_ptrace_access_check(struct task_struct *child, unsigned int mode);
 int security_ptrace_traceme(struct task_struct *parent);
 int security_capget(struct task_struct *target,
@@ -394,25 +394,25 @@ static inline int security_init(void)
 	return 0;
 }
 
-static inline int security_binder_set_context_mgr(struct task_struct *mgr)
+static inline int security_binder_set_context_mgr(const struct cred *mgr)
 {
 	return 0;
 }
 
-static inline int security_binder_transaction(struct task_struct *from,
-					      struct task_struct *to)
+static inline int security_binder_transaction(const struct cred *from,
+					      const struct cred *to)
 {
 	return 0;
 }
 
-static inline int security_binder_transfer_binder(struct task_struct *from,
-						  struct task_struct *to)
+static inline int security_binder_transfer_binder(const struct cred *from,
+						  const struct cred *to)
 {
 	return 0;
 }
 
-static inline int security_binder_transfer_file(struct task_struct *from,
-						struct task_struct *to,
+static inline int security_binder_transfer_file(const struct cred *from,
+						const struct cred *to,
 						struct file *file)
 {
 	return 0;
diff --git a/include/linux/wait.h b/include/linux/wait.h
index 2408e8d..e022ee9 100644
--- a/include/linux/wait.h
+++ b/include/linux/wait.h
@@ -202,6 +202,7 @@ void __wake_up_locked_key(wait_queue_head_t *q, unsigned int mode, void *key);
 void __wake_up_sync_key(wait_queue_head_t *q, unsigned int mode, int nr, void *key);
 void __wake_up_locked(wait_queue_head_t *q, unsigned int mode, int nr);
 void __wake_up_sync(wait_queue_head_t *q, unsigned int mode, int nr);
+void __wake_up_pollfree(wait_queue_head_t *wq_head);
 void __wake_up_bit(wait_queue_head_t *, void *, int);
 int __wait_on_bit(wait_queue_head_t *, struct wait_bit_queue *, wait_bit_action_f *, unsigned);
 int __wait_on_bit_lock(wait_queue_head_t *, struct wait_bit_queue *, wait_bit_action_f *, unsigned);
@@ -236,6 +237,31 @@ wait_queue_head_t *bit_waitqueue(void *, int);
 #define wake_up_interruptible_sync_poll(x, m)				\
 	__wake_up_sync_key((x), TASK_INTERRUPTIBLE, 1, (void *) (m))
 
+/**
+ * wake_up_pollfree - signal that a polled waitqueue is going away
+ * @wq_head: the wait queue head
+ *
+ * In the very rare cases where a ->poll() implementation uses a waitqueue whose
+ * lifetime is tied to a task rather than to the 'struct file' being polled,
+ * this function must be called before the waitqueue is freed so that
+ * non-blocking polls (e.g. epoll) are notified that the queue is going away.
+ *
+ * The caller must also RCU-delay the freeing of the wait_queue_head, e.g. via
+ * an explicit synchronize_rcu() or call_rcu(), or via SLAB_DESTROY_BY_RCU.
+ */
+static inline void wake_up_pollfree(wait_queue_head_t *wq_head)
+{
+	/*
+	 * For performance reasons, we don't always take the queue lock here.
+	 * Therefore, we might race with someone removing the last entry from
+	 * the queue, and proceed while they still hold the queue lock.
+	 * However, rcu_read_lock() is required to be held in such cases, so we
+	 * can safely proceed with an RCU-delayed free.
+	 */
+	if (waitqueue_active(wq_head))
+		__wake_up_pollfree(wq_head);
+}
+
 #define ___wait_cond_timeout(condition)					\
 ({									\
 	bool __cond = (condition);					\
diff --git a/kernel/sched/wait.c b/kernel/sched/wait.c
index 9453efe..133afaf 100644
--- a/kernel/sched/wait.c
+++ b/kernel/sched/wait.c
@@ -10,6 +10,7 @@
 #include <linux/wait.h>
 #include <linux/hash.h>
 #include <linux/kthread.h>
+#include <linux/poll.h>
 
 void __init_waitqueue_head(wait_queue_head_t *q, const char *name, struct lock_class_key *key)
 {
@@ -156,6 +157,13 @@ void __wake_up_sync(wait_queue_head_t *q, unsigned int mode, int nr_exclusive)
 }
 EXPORT_SYMBOL_GPL(__wake_up_sync);	/* For internal use only */
 
+void __wake_up_pollfree(wait_queue_head_t *wq_head)
+{
+	__wake_up(wq_head, TASK_NORMAL, 0, (void *)(POLLHUP | POLLFREE));
+	/* POLLFREE must have cleared the queue. */
+	WARN_ON_ONCE(waitqueue_active(wq_head));
+}
+
 /*
  * Note: we use "set_current_state()" _after_ the wait-queue add,
  * because we need a memory barrier there on SMP, so that any
diff --git a/lib/iov_iter.c b/lib/iov_iter.c
index a75ea63..9bb4b3e 100644
--- a/lib/iov_iter.c
+++ b/lib/iov_iter.c
@@ -370,6 +370,7 @@ static size_t copy_page_to_iter_pipe(struct page *page, size_t offset, size_t by
 		return 0;
 	pipe->nrbufs++;
 	buf->ops = &page_cache_pipe_buf_ops;
+	buf->flags = 0;
 	get_page(buf->page = page);
 	buf->offset = offset;
 	buf->len = bytes;
@@ -494,6 +495,7 @@ static size_t push_pipe(struct iov_iter *i, size_t size,
 			break;
 		pipe->nrbufs++;
 		pipe->bufs[idx].ops = &default_pipe_buf_ops;
+		pipe->bufs[idx].flags = 0;
 		pipe->bufs[idx].page = page;
 		pipe->bufs[idx].offset = 0;
 		if (left <= PAGE_SIZE) {
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index c6779ac..46d8b14 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -1754,6 +1754,8 @@ void __split_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,
 	spinlock_t *ptl;
 	struct mm_struct *mm = vma->vm_mm;
 	unsigned long haddr = address & HPAGE_PMD_MASK;
+	bool was_locked = false;
+	pmd_t _pmd;
 
 	mmu_notifier_invalidate_range_start(mm, haddr, haddr + HPAGE_PMD_SIZE);
 	ptl = pmd_lock(mm, pmd);
@@ -1763,11 +1765,32 @@ void __split_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,
 	 * pmd against. Otherwise we can end up replacing wrong page.
 	 */
 	VM_BUG_ON(freeze && !page);
-	if (page && page != pmd_page(*pmd))
-	        goto out;
+	if (page) {
+		VM_WARN_ON_ONCE(!PageLocked(page));
+		was_locked = true;
+		if (page != pmd_page(*pmd))
+			goto out;
+	}
 
+repeat:
 	if (pmd_trans_huge(*pmd)) {
-		page = pmd_page(*pmd);
+		if (!page) {
+			page = pmd_page(*pmd);
+			if (unlikely(!trylock_page(page))) {
+				get_page(page);
+				_pmd = *pmd;
+				spin_unlock(ptl);
+				lock_page(page);
+				spin_lock(ptl);
+				if (unlikely(!pmd_same(*pmd, _pmd))) {
+					unlock_page(page);
+					put_page(page);
+					page = NULL;
+					goto repeat;
+				}
+				put_page(page);
+			}
+		}
 		if (PageMlocked(page))
 			clear_page_mlock(page);
 	} else if (!pmd_devmap(*pmd))
@@ -1775,6 +1798,8 @@ void __split_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,
 	__split_huge_pmd_locked(vma, pmd, haddr, freeze);
 out:
 	spin_unlock(ptl);
+	if (!was_locked && page)
+		unlock_page(page);
 	mmu_notifier_invalidate_range_end(mm, haddr, haddr + HPAGE_PMD_SIZE);
 }
 
diff --git a/net/netfilter/xt_qtaguid.c b/net/netfilter/xt_qtaguid.c
index d677909..bc7496d 100644
--- a/net/netfilter/xt_qtaguid.c
+++ b/net/netfilter/xt_qtaguid.c
@@ -1066,18 +1066,6 @@ static struct sock_tag *get_sock_stat_nl(const struct sock *sk)
 	return sock_tag_tree_search(&sock_tag_tree, sk);
 }
 
-static struct sock_tag *get_sock_stat(const struct sock *sk)
-{
-	struct sock_tag *sock_tag_entry;
-	MT_DEBUG("qtaguid: get_sock_stat(sk=%p)\n", sk);
-	if (!sk)
-		return NULL;
-	spin_lock_bh(&sock_tag_list_lock);
-	sock_tag_entry = get_sock_stat_nl(sk);
-	spin_unlock_bh(&sock_tag_list_lock);
-	return sock_tag_entry;
-}
-
 static int ipx_proto(const struct sk_buff *skb,
 		     struct xt_action_param *par)
 {
@@ -1309,12 +1297,15 @@ static void if_tag_stat_update(const char *ifname, uid_t uid,
 	 * Look for a tagged sock.
 	 * It will have an acct_uid.
 	 */
-	sock_tag_entry = get_sock_stat(sk);
+	spin_lock_bh(&sock_tag_list_lock);
+	sock_tag_entry = sk ? get_sock_stat_nl(sk) : NULL;
 	if (sock_tag_entry) {
 		tag = sock_tag_entry->tag;
 		acct_tag = get_atag_from_tag(tag);
 		uid_tag = get_utag_from_tag(tag);
-	} else {
+	}
+	spin_unlock_bh(&sock_tag_list_lock);
+	if (!sock_tag_entry) {
 		acct_tag = make_atag_from_value(0);
 		tag = combine_atag_with_uid(acct_tag, uid);
 		uid_tag = make_tag_from_uid(uid);
diff --git a/net/netfilter/xt_quota2.c b/net/netfilter/xt_quota2.c
index 834594a..01568e3 100644
--- a/net/netfilter/xt_quota2.c
+++ b/net/netfilter/xt_quota2.c
@@ -162,6 +162,8 @@ static ssize_t quota_proc_write(struct file *file, const char __user *input,
 	if (copy_from_user(buf, input, size) != 0)
 		return -EFAULT;
 	buf[sizeof(buf)-1] = '\0';
+	if (size < sizeof(buf))
+		buf[size] = '\0';
 
 	spin_lock_bh(&e->lock);
 	e->quota = simple_strtoull(buf, NULL, 0);
diff --git a/security/security.c b/security/security.c
index de6ebf8..8571804 100644
--- a/security/security.c
+++ b/security/security.c
@@ -132,25 +132,25 @@ int __init security_module_enable(const char *module)
 
 /* Security operations */
 
-int security_binder_set_context_mgr(struct task_struct *mgr)
+int security_binder_set_context_mgr(const struct cred *mgr)
 {
 	return call_int_hook(binder_set_context_mgr, 0, mgr);
 }
 
-int security_binder_transaction(struct task_struct *from,
-				struct task_struct *to)
+int security_binder_transaction(const struct cred *from,
+				const struct cred *to)
 {
 	return call_int_hook(binder_transaction, 0, from, to);
 }
 
-int security_binder_transfer_binder(struct task_struct *from,
-				    struct task_struct *to)
+int security_binder_transfer_binder(const struct cred *from,
+				    const struct cred *to)
 {
 	return call_int_hook(binder_transfer_binder, 0, from, to);
 }
 
-int security_binder_transfer_file(struct task_struct *from,
-				  struct task_struct *to, struct file *file)
+int security_binder_transfer_file(const struct cred *from,
+				  const struct cred *to, struct file *file)
 {
 	return call_int_hook(binder_transfer_file, 0, from, to, file);
 }
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
index bc5222e..79063e5 100644
--- a/security/selinux/hooks.c
+++ b/security/selinux/hooks.c
@@ -2078,21 +2078,18 @@ static inline u32 open_file_to_av(struct file *file)
 
 /* Hook functions begin here. */
 
-static int selinux_binder_set_context_mgr(struct task_struct *mgr)
+static int selinux_binder_set_context_mgr(const struct cred *mgr)
 {
-	u32 mysid = current_sid();
-	u32 mgrsid = task_sid(mgr);
-
-	return avc_has_perm(mysid, mgrsid, SECCLASS_BINDER,
+	return avc_has_perm(current_sid(), cred_sid(mgr), SECCLASS_BINDER,
 			    BINDER__SET_CONTEXT_MGR, NULL);
 }
 
-static int selinux_binder_transaction(struct task_struct *from,
-				      struct task_struct *to)
+static int selinux_binder_transaction(const struct cred *from,
+				      const struct cred *to)
 {
 	u32 mysid = current_sid();
-	u32 fromsid = task_sid(from);
-	u32 tosid = task_sid(to);
+	u32 fromsid = cred_sid(from);
+	u32 tosid = cred_sid(to);
 	int rc;
 
 	if (mysid != fromsid) {
@@ -2106,21 +2103,19 @@ static int selinux_binder_transaction(struct task_struct *from,
 			    NULL);
 }
 
-static int selinux_binder_transfer_binder(struct task_struct *from,
-					  struct task_struct *to)
+static int selinux_binder_transfer_binder(const struct cred *from,
+					  const struct cred *to)
 {
-	u32 fromsid = task_sid(from);
-	u32 tosid = task_sid(to);
-
-	return avc_has_perm(fromsid, tosid, SECCLASS_BINDER, BINDER__TRANSFER,
+	return avc_has_perm(cred_sid(from), cred_sid(to),
+			    SECCLASS_BINDER, BINDER__TRANSFER,
 			    NULL);
 }
 
-static int selinux_binder_transfer_file(struct task_struct *from,
-					struct task_struct *to,
+static int selinux_binder_transfer_file(const struct cred *from,
+					const struct cred *to,
 					struct file *file)
 {
-	u32 sid = task_sid(to);
+	u32 sid = cred_sid(to);
 	struct file_security_struct *fsec = file->f_security;
 	struct dentry *dentry = file->f_path.dentry;
 	struct inode_security_struct *isec;
SKBSBLT-215-test.patch (33,221 bytes)   

(SW) Jerry Lin

2023-05-16 17:58

developer   ~0013148

Hi Sangmin Choi,

upload to
/release_by_fxn/swan_test_image/20230516_mantis1496

SD Version: BFX-UA300_20230516_SD_v536r27
ND Version: BFX-UA300_20230516_ND_v536r27

Jerry

(ALTech) Sangmin Choi

2023-05-22 16:27

developer   ~0013204

Hello, Jerry,

Could you please build a test firmware? SD only.

syna-release/tee
2977b770c01e998c8e4281e6bd118c2cf0d52c30

You can checkout the test branch using following command.

cd syna-release/tee
git checkout -b test 2977b770c01e998c8e4281e6bd118c2cf0d52c30

Thank you.
Sangmin Choi.

(SW) Jerry Lin

2023-05-22 19:25

developer   ~0013205

Hi Sangmin Choi,

upload to
/release_by_fxn/swan_test_image/20230522_mantis1496/usb_bfx-ua300_V19.536.27_SD.zip

Jerry

(ALTech) Sangmin Choi

2023-06-08 12:48

developer   ~0013312

Hello, Jerry,

Could you please build a test firmware after applied attached patches? SD only.

syna-release/ampsdk
change_debug_level.diff

Thank you.
Sangmin Choi.
change_debug_level.diff (756 bytes)   
diff --git a/amp/src/ddl/common/component.c b/amp/src/ddl/common/component.c
index 8a8fb24..fb5ab2b 100755
--- a/amp/src/ddl/common/component.c
+++ b/amp/src/ddl/common/component.c
@@ -844,7 +844,7 @@ HRESULT DDL_COMPONENT_LockConnection(COMPONENT hThisInstance,
         pPortPeer =
             &hInstancePeer->pPort[AMP_PORT_OUTPUT][pPort->stConn.uiPeerPortIdx];
         if (pPortPeer == NULL) {
-            MODLOGH("Null lock: %s, %s, %d; Peer: %s, %d, 0x%08x, 0x%08x\n",
+            MODLOGE("Null lock: %s, %s, %d; Peer: %s, %d, 0x%08x, 0x%08x\n",
                 compInfo->sName, ePortIo == AMP_PORT_INPUT ? "input" : "output",
                 uiPortIdx, hInstancePeer->stInfo.sName,
                 pPort->stConn.uiPeerPortIdx, hInstancePeer,
change_debug_level.diff (756 bytes)   

(SW) Jerry Lin

2023-06-08 15:28

developer   ~0013317

Hi Sangmin Choi,

upload to
/release_by_fxn/swan_test_image/20230608_mantis1496/usb_bfx-ua300_V19.536.29_SD.zip

Jerry

(ALTech) Sangmin Choi

2023-06-13 13:30

developer   ~0013348

Hello, Jerry,

Could you please build a test firmware after applied attached patches? SD only.

syna-release/ampsdk
0001-AMP-event-add-mutex-for-rwlock-to-avoid-it-dead-lock.patch

Thank you.
Sangmin Choi.
0001-AMP-event-add-mutex-for-rwlock-to-avoid-it-dead-lock.patch (4,762 bytes)   
From 3fbf857a07b630c7881bacdb4ec2b853bbbbaf37 Mon Sep 17 00:00:00 2001
From: Zhiliang Wang <Zhiliang.Wang@synaptics.com>
Date: Wed, 5 Jan 2022 11:14:29 +0800
Subject: [PATCH] AMP: event: add mutex for rwlock to avoid it dead lock

currently there is bug in pthread lib, dead lock will easily
occur when multiple threads call pthread_rwlock apis, add
mutext as a workaround to avoid it

Change-Id: Ie0ecf17cb27d00c5c9119ab9fdd52cc3319a8543
---
 amp/src/libs/server/amp_event_service.c | 24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/amp/src/libs/server/amp_event_service.c b/amp/src/libs/server/amp_event_service.c
index 623866b..30644dd 100755
--- a/amp/src/libs/server/amp_event_service.c
+++ b/amp/src/libs/server/amp_event_service.c
@@ -97,6 +97,7 @@ typedef struct {
 #ifdef AMP_LATENCY_EVENT_SRV_PROF
     AMP_TOP                         stEventCBStats;
 #endif
+    MV_OSAL_HANDLE_MUTEX_t          hMutex;
 } EVENT_LISTEN_SERVICE;
 
 static EVENT_LISTEN_SERVICE         *m_event_service;
@@ -292,10 +293,12 @@ HRESULT ISL_Listener_Create(UINT uiSrvIdN, UINT uiSrvIdC, HANDLE *phListener)
     EVENT_LISTEN_SERVICE *pEventService = m_event_service;
     EVENT_LISTEN_CLIENT *pClientListener = NULL;
 
+    MV_OSAL_Mutex_Lock(pEventService->hMutex);
     MV_OSAL_RWLock_WRLock(pEventService->hEventLock);
     pClientListener = alloc_event_listener(pEventService);
     if (!pClientListener) {
         MV_OSAL_RWLock_Unlock(pEventService->hEventLock);
+        MV_OSAL_Mutex_Unlock(pEventService->hMutex);
         AMPLOGE("Allocate listen fail!(%x %x)", uiSrvIdN, uiSrvIdC);
         return HRESULT_GEN(EVENTLI, ERR_NOSWRSC);
     }
@@ -305,11 +308,13 @@ HRESULT ISL_Listener_Create(UINT uiSrvIdN, UINT uiSrvIdC, HANDLE *phListener)
     if (rc != SUCCESS) {
         pClientListener->bAllocated = 0;
         MV_OSAL_RWLock_Unlock(pEventService->hEventLock);
+        MV_OSAL_Mutex_Unlock(pEventService->hMutex);
         AMPLOGE("%p new eventbuf (%x %x) rc:%x", pClientListener, uiSrvIdN, uiSrvIdC, rc);
         return rc;
     }
 
     MV_OSAL_RWLock_Unlock(pEventService->hEventLock);
+    MV_OSAL_Mutex_Unlock(pEventService->hMutex);
     AMPLOGD("%p new eventsrv (%x %x) rc:%x", pClientListener, uiSrvIdN, uiSrvIdC, rc);
     *phListener = (HANDLE) pClientListener;
 
@@ -333,6 +338,7 @@ HRESULT ISL_Listener_Destory(HANDLE hListener)
     AMP_RemoteEventCallbackPro((UINT32)pClientListener, &event);
     AMPLOGD("NOTIFY listener:%x, we are done", pClientListener);
 
+    MV_OSAL_Mutex_Lock(pEventService->hMutex);
     MV_OSAL_RWLock_WRLock(pEventService->hEventLock);
     rc = AMP_DeinitEventBuffer(&pClientListener->hEventBuffer);
     if (rc != S_OK) {
@@ -341,6 +347,7 @@ HRESULT ISL_Listener_Destory(HANDLE hListener)
     pClientListener->bAllocated = 0;
     pEventService->uiAllocatedClients--;
     MV_OSAL_RWLock_Unlock(pEventService->hEventLock);
+    MV_OSAL_Mutex_Unlock(pEventService->hMutex);
 
     return SUCCESS;
 }
@@ -496,13 +503,20 @@ HRESULT AMP_InitializeRemoteEventService()
     }
     AmpMemSet(pEventService, 0, sizeof(EVENT_LISTEN_SERVICE));
 
-    rc = MV_OSAL_RWLock_Create(&pEventService->hEventLock);
+    rc = MV_OSAL_Mutex_Create(&pEventService->hMutex);
     if (rc != S_OK) {
         AMPLOGE("Create mutex fail:%x\n", rc);
         AmpFree(pEventService);
         return rc;
     }
 
+    rc = MV_OSAL_RWLock_Create(&pEventService->hEventLock);
+    if (rc != S_OK) {
+        AMPLOGE("Create RWLock fail:%x\n", rc);
+        AmpFree(pEventService);
+        return rc;
+    }
+
     evl_cache_add_event(&pEventService->stEventCache, AMP_EVENT_API_DISP_CALLBACK_VSYNC);
 
     m_event_service = pEventService;
@@ -519,6 +533,10 @@ HRESULT AMP_DeinitializeRemoteEventService()
     if (rc != S_OK) {
         return rc;
     }
+    rc = MV_OSAL_Mutex_Destroy(&pEventService->hMutex);
+    if (rc != S_OK) {
+        return rc;
+    }
     if (pEventService) {
         AmpFree(pEventService);
         m_event_service = NULL;
@@ -555,11 +573,14 @@ HRESULT AMP_RemoteEventCallbackPro(UINT32 ServiceID, AMP_EVENT *pEvent)
         return SUCCESS;
     }
 
+    MV_OSAL_Mutex_Lock(pEventService->hMutex);
+
     ll = send = 0;
     if (ServiceID == REMOTE_EVENT_SERVERID_DEFAULT) {
         rc = MV_OSAL_RWLock_TryWRLock(pEventService->hEventLock, 10);
         if (rc != S_OK) {
             AMPLOGE("trylock eventlock rc:%x", rc);
+            MV_OSAL_Mutex_Unlock(pEventService->hMutex);
             return rc;
         }
 
@@ -605,6 +626,7 @@ HRESULT AMP_RemoteEventCallbackPro(UINT32 ServiceID, AMP_EVENT *pEvent)
     }
 
     MV_OSAL_RWLock_Unlock(pEventService->hEventLock);
+    MV_OSAL_Mutex_Unlock(pEventService->hMutex);
 
     return rc;
 }
-- 
2.7.4

(SW) Jerry Lin

2023-06-13 15:41

developer   ~0013355

Hi Sangmin Choi,

upload to
/release_by_fxn/swan_test_image/20230613_mantis1496/usb_bfx-ua300_V19.536.29_SD.zip

Jerry

(ALTech) Sangmin Choi

2023-06-22 16:31

developer   ~0013483

Hello, Jerry,

Could you please build a test firmware after apply patches from CSMSKBSBLT-221?
https://synacsm.atlassian.net/servicedesk/customer/portal/173/CSMSKBSBLT-221

Thank you.
Sangmin Choi.

(SW) Jerry Lin

2023-06-23 08:30

developer   ~0013485

Hi Sangmin Choi,
Please share me the patch file of CSMSKBSBLT-221.

Jerry

(ALTech) Sangmin Choi

2023-06-23 08:52

developer   ~0013487

Hello, Jerry,

Here are patches from CSMSKBSBLT-221.
And, please build this firmware next Monday.

Thank you.
Sangmin Choi.
SKBSBLT-221-wakeup-time-test.patch (416 bytes)   
diff --git a/amp_wrapper.h b/amp_wrapper.h
index f732e0e..c0c1893 100644
--- a/amp_wrapper.h
+++ b/amp_wrapper.h
@@ -19,7 +19,7 @@
 #define AREN_OUTPUT_PORT_NUM   1
 #define AREN_OUTPUT_PORT_NUM_PASS 3
 
-#define MAX_BUF_NUM      (347)
+#define MAX_BUF_NUM      (30)
 #define MAX_BUF_SIZE     (188 * 128)
 #define WRAP_UP(a, b)    (((a) + (b) - 1) / (b) * (b))
 #define BUF_ACTURAL_SIZE (MAX_BUF_SIZE * MAX_BUF_NUM)
outputimage_5004.zip (1,183,678 bytes)

(SW) Jerry Lin

2023-06-26 08:25

developer   ~0013490

Hi Sangmin Choi,

upload to
/release_by_fxn/swan_test_image/20230626_mantis1496/usb_bfx-ua300_V19.540.3_SD.zip

Jerry

(ALTech) Sangmin Choi

2023-06-27 08:56

developer   ~0013507

Hello, Jerry,

Could you please build a test firmware after applied attached patches? SD only.

syna-release/ampsdk
CSMSKBSBLT-216-debug-01.patch

Thank you.
Sangmin Choi.
CSMSKBSBLT-216-debug-01.patch (3,521 bytes)   
diff --git a/amp/src/aal/amp_client_misc.c b/amp/src/aal/amp_client_misc.c
index 9a82655..c7df53c 100755
--- a/amp/src/aal/amp_client_misc.c
+++ b/amp/src/aal/amp_client_misc.c
@@ -440,6 +440,8 @@ HRESULT AMP_DisconnectApp(AMP_COMPONENT hCompObj, AMP_PORT_IO ePortIo,
     return SUCCESS;
 }
 
+static int gConCount=0;
+
 HRESULT AMP_ConnectComp(AMP_COMPONENT hUpCompObj, UINT32 uiUpPortIdx,
     AMP_COMPONENT hDownCompObj, UINT32 uiDownPortIdx)
 {
@@ -448,6 +450,9 @@ HRESULT AMP_ConnectComp(AMP_COMPONENT hUpCompObj, UINT32 uiUpPortIdx,
     struct AMP_PORT_CONN port_conn;
     HRESULT result;
 
+    FWLOGE("%s:%d Count=%d Up=%x Uport=%u Down=%x Dport=%u",
+           __FUNCTION__, __LINE__, ++gConCount, hUpCompObj, uiUpPortIdx, hDownCompObj, uiDownPortIdx);
+
     AMP_RPC(result, AMP_COMPONENT_QueryInfo, hUpCompObj,   &stCompInfo[0]);
     if (result != SUCCESS) {
         FWLOGE("Query upstream component fail!");
@@ -470,6 +475,13 @@ HRESULT AMP_ConnectComp(AMP_COMPONENT hUpCompObj, UINT32 uiUpPortIdx,
         FWLOGE("Query downstream port fail! %d", uiDownPortIdx);
         return result;
     }
+
+    /* print downstream component first */
+    FWLOGE("%s:%d downstream compoent", __FUNCTION__, __LINE__);
+    stCompInfo[0].sName[15]=0;
+    FWLOGE("name=%s Iport=%u Oport=%u handle=%x",
+              stCompInfo[0].sName, stCompInfo[0].uiInputPortNum, stCompInfo[0].uiOutputPortNum, stCompInfo[0].hInterHandle);
+
     /* Setup downstream component first */
     memset(&port_conn, 0, sizeof(struct AMP_PORT_CONN));
     port_conn.ePeerType = port_info[0].ePortType;
@@ -483,6 +495,12 @@ HRESULT AMP_ConnectComp(AMP_COMPONENT hUpCompObj, UINT32 uiUpPortIdx,
         return result;
     }
 
+    /* print upstream component */
+    FWLOGE("%s:%d downstream compoent", __FUNCTION__, __LINE__);
+    stCompInfo[1].sName[15]=0;
+    FWLOGE("name=%s Iport=%u Oport=%u handle=%x",
+              stCompInfo[1].sName, stCompInfo[1].uiInputPortNum, stCompInfo[1].uiOutputPortNum, stCompInfo[1].hInterHandle);
+
     /* Setup upstream component */
     memset(&port_conn, 0, sizeof(struct AMP_PORT_CONN));
     port_conn.ePeerType = port_info[1].ePortType;
@@ -492,10 +510,14 @@ HRESULT AMP_ConnectComp(AMP_COMPONENT hUpCompObj, UINT32 uiUpPortIdx,
     AMP_RPC(result, AMP_COMPONENT_SetupPort, hUpCompObj,   AMP_PORT_OUTPUT,
             uiUpPortIdx, &port_conn);
     if (result != SUCCESS) {
-        /* Clean downstream component setup before */
-        AMP_RPC(result, AMP_COMPONENT_ClearPort, hDownCompObj, AMP_PORT_INPUT,
-                uiDownPortIdx);
-        FWLOGE("Setup upstream port fail! %d", uiUpPortIdx);
+        if( hDownCompObj ){
+            /* Clean downstream component setup before */
+            AMP_RPC(result, AMP_COMPONENT_ClearPort, hDownCompObj, AMP_PORT_INPUT,
+                    uiDownPortIdx);
+            FWLOGE("Setup upstream port fail! Clean DownComp %d", uiUpPortIdx);
+        }else{
+            FWLOGE("Setup upstream port fail! Do not clean DownComp %d", uiUpPortIdx);
+        }
         return result;
     }
 
@@ -507,6 +529,9 @@ HRESULT AMP_DisconnectComp(AMP_COMPONENT hUpCompObj, UINT32 uiUpPortIdx,
 {
     HRESULT result;
 
+    FWLOGE("%s:%d Count=%d Up=%x Uport=%u Down=%x Dport=%u",
+           __FUNCTION__, __LINE__, --gConCount, hUpCompObj, uiUpPortIdx, hDownCompObj, uiDownPortIdx);
+
     /* Stop upstream port first */
     AMP_RPC(result, AMP_COMPONENT_DisconnectPorts, hUpCompObj, uiUpPortIdx,
             hDownCompObj, uiDownPortIdx);
CSMSKBSBLT-216-debug-01.patch (3,521 bytes)   

(SW) Jerry Lin

2023-06-27 14:29

developer   ~0013511

Hi Sangmin Choi,

upload to
/release_by_fxn/swan_test_image/20230627_mantis1496/usb_bfx-ua300_V19.540.3_SD.zip

Jerry

(ALTech) Sangmin Choi

2023-06-29 12:35

developer   ~0013527

Hello, Jerry,

Could you please build a test firmware after apply patches from CSMSKBSBLT-221?
https://synacsm.atlassian.net/servicedesk/customer/portal/173/CSMSKBSBLT-221

One more patch is added.

Thank you.
Sangmin Choi.
outputimage_5004-2.zip (1,183,678 bytes)
SKBSBLT-221-wakeup-time-test-2.patch (416 bytes)   
diff --git a/amp_wrapper.h b/amp_wrapper.h
index f732e0e..c0c1893 100644
--- a/amp_wrapper.h
+++ b/amp_wrapper.h
@@ -19,7 +19,7 @@
 #define AREN_OUTPUT_PORT_NUM   1
 #define AREN_OUTPUT_PORT_NUM_PASS 3
 
-#define MAX_BUF_NUM      (347)
+#define MAX_BUF_NUM      (30)
 #define MAX_BUF_SIZE     (188 * 128)
 #define WRAP_UP(a, b)    (((a) + (b) - 1) / (b) * (b))
 #define BUF_ACTURAL_SIZE (MAX_BUF_SIZE * MAX_BUF_NUM)
CSMAI2-68-trivial2.patch (938 bytes)   
diff --git a/amp/src/service/display/src/disp_api.c b/amp/src/service/display/src/disp_api.c
index 8481b1f..bebb113 100755
--- a/amp/src/service/display/src/disp_api.c
+++ b/amp/src/service/display/src/disp_api.c
@@ -3697,7 +3697,7 @@ HRESULT DISP_OUT_SetResolution(AMP_DISP_TG_ID uiTgId,
         (ResId & 0x80000000)) {
 
             DISP_OUT_SetMute(AMP_DISP_OUT_HDMI, 1);
-            MV_OSAL_Task_Sleep(100);
+            // MV_OSAL_Task_Sleep(100);
             gDispModule->bMuteStatus = TRUE;
 
 #ifdef ENABLE_FRAME_RATE_CONVERSION_FOR_VPP_TG_SYNC
@@ -4143,7 +4143,7 @@ HRESULT DISP_OUT_HDMI_SetVidFmt(INT32 iHdmiColorFmt,
 
         if(gDispModule->bMuteStatus == FALSE) {
             DISP_OUT_SetMute(AMP_DISP_OUT_HDMI, 1);
-            MV_OSAL_Task_Sleep(100);
+            // MV_OSAL_Task_Sleep(100);
             gDispModule->bMuteStatus = TRUE;
         }
         Ret = MV_VPPOBJ_SetHdmiVideoFmt(gDispModule->iVppHandle,
CSMAI2-68-trivial2.patch (938 bytes)   

(SW) Jerry Lin

2023-06-29 15:51

developer   ~0013530

Hi Sangmin Choi,

upload to
/release_by_fxn/swan_test_image/20230629_mantis1496/usb_bfx-ua300_V19.540.5_SD.zip

Jerry

(ALTech) Sangmin Choi

2023-07-03 10:25

developer   ~0013546

Hello, Jerry,

I'm sorry I uploaded wrong outputimage.

Could you please build a test firmware again using attached patches?

Thank you.
Sangmin Choi.
CSMAI2-68-trivial.patch (416 bytes)   
diff --git a/amp_wrapper.h b/amp_wrapper.h
index d3c34e8..72b2c41 100644
--- a/amp_wrapper.h
+++ b/amp_wrapper.h
@@ -19,7 +19,7 @@
 #define AREN_OUTPUT_PORT_NUM   1
 #define AREN_OUTPUT_PORT_NUM_PASS 3
 
-#define MAX_BUF_NUM      (347)
+#define MAX_BUF_NUM      (30)
 #define MAX_BUF_SIZE     (188 * 128)
 #define WRAP_UP(a, b)    (((a) + (b) - 1) / (b) * (b))
 #define BUF_ACTURAL_SIZE (MAX_BUF_SIZE * MAX_BUF_NUM)
CSMAI2-68-trivial.patch (416 bytes)   
CSMAI2-68-trivial2-2.patch (938 bytes)   
diff --git a/amp/src/service/display/src/disp_api.c b/amp/src/service/display/src/disp_api.c
index 8481b1f..bebb113 100755
--- a/amp/src/service/display/src/disp_api.c
+++ b/amp/src/service/display/src/disp_api.c
@@ -3697,7 +3697,7 @@ HRESULT DISP_OUT_SetResolution(AMP_DISP_TG_ID uiTgId,
         (ResId & 0x80000000)) {
 
             DISP_OUT_SetMute(AMP_DISP_OUT_HDMI, 1);
-            MV_OSAL_Task_Sleep(100);
+            // MV_OSAL_Task_Sleep(100);
             gDispModule->bMuteStatus = TRUE;
 
 #ifdef ENABLE_FRAME_RATE_CONVERSION_FOR_VPP_TG_SYNC
@@ -4143,7 +4143,7 @@ HRESULT DISP_OUT_HDMI_SetVidFmt(INT32 iHdmiColorFmt,
 
         if(gDispModule->bMuteStatus == FALSE) {
             DISP_OUT_SetMute(AMP_DISP_OUT_HDMI, 1);
-            MV_OSAL_Task_Sleep(100);
+            // MV_OSAL_Task_Sleep(100);
             gDispModule->bMuteStatus = TRUE;
         }
         Ret = MV_VPPOBJ_SetHdmiVideoFmt(gDispModule->iVppHandle,
CSMAI2-68-trivial2-2.patch (938 bytes)   
outputimage_5045.zip (1,182,626 bytes)

(SW) Jerry Lin

2023-07-03 16:00

developer   ~0013549

Hi Sangmin Choi,

upload to
/release_by_fxn/swan_test_image/20230703_mantis1496/usb_bfx-ua300_V19.540.5_SD.zip

Jerry

(ALTech) Sangmin Choi

2023-07-04 12:32

developer   ~0013555

Hello, Jerry,

Could you please build a test firmware after applied attached patches? SD only.

vendor/synaptics/btv-hal-impl/synaptics
CSMSKBSBLT-216-Remove-stop-start.patch
CSMSKBSBLT-216-thread-lock.patch

Thank you.
Sangmin Choi.
CSMSKBSBLT-216-Remove-stop-start.patch (7,152 bytes)   
diff --git a/amp_wrapper.c b/amp_wrapper.c
index 43ba512..290547f 100644
--- a/amp_wrapper.c
+++ b/amp_wrapper.c
@@ -69,6 +69,21 @@ int amp_check_nugu_enabled(){
     return 0;
 }
 
+int amp_check_a2dp_playing(){
+     char a2dp_play[PROP_VALUE_MAX];
+     memset(a2dp_play, 0, PROP_VALUE_MAX);
+
+     if( !property_get("vendor.audio.a2dp.playing", a2dp_play, "0") )
+         ALOGD("++%s failed to read vendor.audio.a2dp.playing", __FUNCTION__);
+
+     if( !strcmp(a2dp_play, "1") ){
+         ALOGD("++%s a2dp_play (%s)!!!!", __FUNCTION__, a2dp_play);
+         return 1;
+     }
+     ALOGD("++%s a2dp_play (%s)!!!!", __FUNCTION__, a2dp_play);
+     return 0;
+}
+
 int amp_SetWindowSize(synaptics_player_info *socPlayerInfo) {
     ALOGD("++SetWindowSize");
     if(socPlayerInfo == NULL)  {
@@ -394,9 +409,8 @@ HRESULT amp_dmx_event_handler(HANDLE hListener, AMP_EVENT *pEvent, VOID *pUserDa
             ALOGD("++amp_dmx_event_handler AMP_EVENT_DMX_INBUFF_OVERFLOW (handle=0x%x, fulness=0x%x, size=0x%x)",
                                        pBuffState->hHandle, pBuffState->uFullness, pBuffState->uSize );
 
-			amp_stop_pipeline(player);
-
-			amp_start_pipeline(player);
+//			amp_stop_pipeline(player);
+//			amp_start_pipeline(player);
 
         } break;
     case AMP_EVENT_DMX_INBUFF_UNDERFLOW:
@@ -405,8 +419,8 @@ HRESULT amp_dmx_event_handler(HANDLE hListener, AMP_EVENT *pEvent, VOID *pUserDa
            ALOGD("++amp_dmx_event_handler AMP_EVENT_DMX_INBUFF_UNDERFLOW (handle=0x%x, fulness=0x%x, size=0x%x)",
                                        pBuffState->hHandle, pBuffState->uFullness, pBuffState->uSize );
             if(socPlayerInfo->playerConfig.clock_recovery_enable == AVP_IPTV) {
-                amp_stop_pipeline(player);
-                amp_start_pipeline(player);
+//                amp_stop_pipeline(player);
+//                amp_start_pipeline(player);
             }
         } break;
     default:
@@ -624,6 +638,8 @@ void setHdmiFormat(AMIXER_HANDLE amixer, AVP_AudioOutputMode mode) {
 
             if( amp_check_nugu_enabled() ){
                 ALOGD("++setHdmiFormat ignored nugu enabled!!!!");
+            }else if( amp_check_a2dp_playing() ){
+                ALOGD("++setHdmiFormat ignored a2dp playing!!!!");
             }else{
                 ALOGD("++setHdmiFormat set dolby !!!!");
                 ret = AMP_SND_SetSpdifFormat(AMP_SND_SPDIF_FORMAT_RAW_MAIN);
@@ -1145,8 +1161,10 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
             (amp_config._u.pADEC.ucFrameIn == AMP_ADEC_STEAM) ? "StreamIn" : "FrameIn");
 
         amp_log(socPlayerInfo->pip ? 1:0, "amp_create_pipeline_bottom_half 4 in, AVP_START");
+ALOGD("%s:%d", __FUNCTION__, __LINE__);
         AMP_RPC(ret, AMP_ADEC_Open, socPlayerInfo->amp_adec, &amp_config);
         assert(ret == SUCCESS);
+ALOGD("%s:%d", __FUNCTION__, __LINE__);
     }
 
     if (socPlayerInfo->playerConfig.video_enable) {
@@ -1154,7 +1172,7 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
         ret = AMP_ConnectComp(socPlayerInfo->amp_vdec, 0, socPlayerInfo->amp_vout, 0);
         assert(ret == SUCCESS);
     }
-
+ALOGD("%s:%d", __FUNCTION__, __LINE__);
     if(socPlayerInfo->playerConfig.audio_enable) {
         //??? audio ????
         if (PREPARE_PASSTHROUGH) {
@@ -1174,6 +1192,7 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
             ret = AMP_ConnectComp(socPlayerInfo->amp_adec, 0, socPlayerInfo->amp_aren, 1);
             assert(ret == SUCCESS);
         }
+ALOGD("%s:%d", __FUNCTION__, __LINE__);
 
         if (PREPARE_PASSTHROUGH) {
             AMP_AREN_PARAST para_st;
@@ -1209,6 +1228,7 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
             assert(ret == SUCCESS);
         }
     }
+ALOGD("%s:%d", __FUNCTION__, __LINE__);
 
     if (socPlayerInfo->playerConfig.video_enable) {
         AmpMemClear(&output_config, sizeof(AMP_DMX_CH_CFG));
@@ -1235,6 +1255,8 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
                 0);
         assert(ret == SUCCESS);
     }
+ALOGD("%s:%d", __FUNCTION__, __LINE__);
+
 
     if(socPlayerInfo->playerConfig.audio_enable) {
         //audio ????
@@ -1244,7 +1266,7 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
         output_config.Tag = 0;
         output_config.uPid = a_pid;
 	output_config.uAlign = 2;
-	output_config.eESOutputMode = AMP_DMX_ES_OUTPUT_MODE_UNITSTART_ALIGN;
+//	output_config.eESOutputMode = AMP_DMX_ES_OUTPUT_MODE_UNITSTART_ALIGN;
 	output_config.uBufSize = 1 * 1024 * 1024;
 	output_config.uBufPaddingSize = 16 * 1024;
         socPlayerInfo->dmx_output_a.uiPortIdx = AMP_DMX_ANY_PORT_IDX;
@@ -1260,6 +1282,7 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
         AMP_RPC(ret, AMP_DMX_ChannelControl, socPlayerInfo->amp_dmx, &socPlayerInfo->dmx_output_a, AMP_DMX_CH_CTRL_ON, 0);
         assert(ret == SUCCESS);
     }
+ALOGD("%s:%d", __FUNCTION__, __LINE__);
 
     AmpMemClear(&output_config, sizeof(AMP_DMX_CH_CFG));
     AmpMemClear(&socPlayerInfo->dmx_output_p, sizeof(AMP_DMX_CHNL_ST));
@@ -1290,6 +1313,7 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
                 VIDEO_USER_DATA_TYPE_CC, AMP_VDEC_IOPARAM_USER_DATA_ENABLE);
         assert(ret == SUCCESS);
     }
+ALOGD("%s:%d", __FUNCTION__, __LINE__);
 
     if(socPlayerInfo->playerConfig.video_enable) { // && socPlayerInfo->pip) {
         if (socPlayerInfo->playerConfig.clock_recovery_enable) { //???????? EOS???? ???
@@ -1308,6 +1332,7 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
                 AMP_EVENT_API_VOUT_CALLBACK_FIRST_FRAME);
         assert(ret == SUCCESS);
     }
+ALOGD("%s:%d", __FUNCTION__, __LINE__);
 
     if(!socPlayerInfo->playerConfig.video_enable) { // jung2604 : ????a?θ?..????.. kec ???? ????? ???..
         if(socPlayerInfo->playerConfig.audio_enable) {
@@ -1317,6 +1342,7 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
             assert(ret == SUCCESS);
         }
     }
+ALOGD("%s:%d", __FUNCTION__, __LINE__);
 }
 
 //pipeline ????..
@@ -2482,6 +2508,7 @@ HRESULT clk_pause_resume(AVP_HANDLE *player, BOOL enable) {
     }
 */
 
+#if 0
     if (TRUE == enable) {
         // pause
         //AMP_RPC(ret, AMP_CLK_SetState, socPlayerInfo->amp_clk, AMP_PAUSED);
@@ -2495,6 +2522,7 @@ HRESULT clk_pause_resume(AVP_HANDLE *player, BOOL enable) {
         //AMP_RPC(ret, AMP_CLK_SetState, socPlayerInfo->amp_clk, AMP_EXECUTING);
         ALOGD("clk_pause_resume Video Resumed\n");
     }
+#endif
 
     return ret;
 }
@@ -2527,6 +2555,7 @@ unsigned short convertAvpCodecToSocCodec(int type, int avpCodec) {
             return AMP_MS11_DDC;
         } else if (avpCodec == AVP_CODEC_AUDIO_AAC) {
             return AMP_HE_AAC;
+            // return AMP_MS11_DDT;
         } else if (avpCodec == AVP_CODEC_AUDIO_AC3) {
             return AMP_MS11_DDC;
         }
CSMSKBSBLT-216-thread-lock.patch (3,124 bytes)   
diff --git a/hal_av_pipeline.c b/hal_av_pipeline.c
index 123d54e..fdaa2f6 100644
--- a/hal_av_pipeline.c
+++ b/hal_av_pipeline.c
@@ -39,6 +39,8 @@ synaptics_player_info gSocPlayerInfo[2];
 			
 pthread_t p_thread_decoder_statistics;
 pthread_mutex_t  thread_mutex = PTHREAD_MUTEX_INITIALIZER;
+pthread_mutex_t  main_mutex = PTHREAD_MUTEX_INITIALIZER;
+pthread_mutex_t  pip_mutex = PTHREAD_MUTEX_INITIALIZER;
 pthread_cond_t   thread_cond  = PTHREAD_COND_INITIALIZER;
 bool isDestroy = true;
 bool isStop = true;
@@ -250,7 +252,13 @@ int  AVP_Start(AVP_HANDLE player, AVP_PlayerConfig *config) {
     ALOGD("BTF|%s|%d|IN| player=%x, vcodec=%d, acodec=%d, pcr_pid=%d, video_pid=%d, audio_pid=%d \n", __FUNCTION__,__LINE__, player, config->video_codec, config->audio_codec, config->pcr_pid, config->video_pid, config->audio_pid);
 
     synaptics_player_info *socPlayerInfo = (synaptics_player_info *) player;
-    socPlayerInfo->playerConfig = *config;
+    socPlayerInfo->playerConfig = *config;
+
+    if( socPlayerInfo->pip ){
+        pthread_mutex_lock(&pip_mutex);
+    }else{
+        pthread_mutex_lock(&main_mutex);
+    }
 	
 	// check decoder error
 	socPlayerInfo->decoder_errors_num_adec = 0;
@@ -320,6 +328,13 @@ int  AVP_Start(AVP_HANDLE player, AVP_PlayerConfig *config) {
 	} else ALOGE("BTF|%s|%d|IN| load volume fail", __FUNCTION__,__LINE__);
 	
 	startCheckDecoderStatistics(player);
+
+    if( socPlayerInfo->pip ){
+        pthread_mutex_unlock(&pip_mutex);
+    }else{
+        pthread_mutex_unlock(&main_mutex);
+    }
+
 
     ALOGD("BTF|%s|%d|OUT| \n", __FUNCTION__,__LINE__);
 
@@ -332,6 +347,12 @@ int  AVP_Stop(AVP_HANDLE player) {
     CHECK_NULL_PLAYER(player);
 
     synaptics_player_info *socPlayerInfo = (synaptics_player_info *) player;
+
+    if( socPlayerInfo->pip ){
+        pthread_mutex_lock(&pip_mutex);
+    }else{
+        pthread_mutex_lock(&main_mutex);
+    }
 	
 	stopCheckDecoderStatistics();
 
@@ -359,7 +380,13 @@ int  AVP_Stop(AVP_HANDLE player) {
     if(logFp[socPlayerInfo->pip ? 1:0] != NULL)
         fclose(logFp[socPlayerInfo->pip ? 1:0]);
 #endif
-
+
+    if( socPlayerInfo->pip ){
+        pthread_mutex_unlock(&pip_mutex);
+    }else{
+        pthread_mutex_unlock(&main_mutex);
+    }
+
     ALOGD("BTF|%s|%d|OUT| \n", __FUNCTION__,__LINE__);
 
 	return 0;
@@ -454,6 +481,13 @@ int  AVP_FlushTS(AVP_HANDLE player) {
     ALOGD("BTF|%s|%d|IN| player=%x\n", __FUNCTION__,__LINE__, player);
 
     synaptics_player_info *socPlayerInfo = (synaptics_player_info *) player;
+
+    if( socPlayerInfo->pip ){
+        pthread_mutex_lock(&pip_mutex);
+    }else{
+        pthread_mutex_lock(&main_mutex);
+    }
+
     amp_stop_pipeline(player);
 
     amp_clear_port_buf(player);
@@ -463,7 +497,13 @@ int  AVP_FlushTS(AVP_HANDLE player) {
     amp_reset_buffer(socPlayerInfo);
 
     amp_start_pipeline(player);
-
+
+    if( socPlayerInfo->pip ){
+        pthread_mutex_unlock(&pip_mutex);
+    }else{
+        pthread_mutex_unlock(&main_mutex);
+    }
+
     ALOGD("BTF|%s|%d|OUT| \n", __FUNCTION__,__LINE__);
 
 	return 0;

(SW) Jerry Lin

2023-07-04 17:05

developer   ~0013562

Hi Sangmin Choi,

upload to
/release_by_fxn/swan_test_image/20230704_mantis1496/usb_bfx-ua300_V19.540.7_SD.zip

Jerry

(ALTech) Sangmin Choi

2023-07-11 12:36

developer   ~0013601

Hello, Jerry,

Could you please build a test firmware again using attached patches?
New patch was released.

Thank you.
Sangmin Choi.
CSMAI2-68-trivial2-3.patch (938 bytes)   
diff --git a/amp/src/service/display/src/disp_api.c b/amp/src/service/display/src/disp_api.c
index 8481b1f..bebb113 100755
--- a/amp/src/service/display/src/disp_api.c
+++ b/amp/src/service/display/src/disp_api.c
@@ -3697,7 +3697,7 @@ HRESULT DISP_OUT_SetResolution(AMP_DISP_TG_ID uiTgId,
         (ResId & 0x80000000)) {
 
             DISP_OUT_SetMute(AMP_DISP_OUT_HDMI, 1);
-            MV_OSAL_Task_Sleep(100);
+            // MV_OSAL_Task_Sleep(100);
             gDispModule->bMuteStatus = TRUE;
 
 #ifdef ENABLE_FRAME_RATE_CONVERSION_FOR_VPP_TG_SYNC
@@ -4143,7 +4143,7 @@ HRESULT DISP_OUT_HDMI_SetVidFmt(INT32 iHdmiColorFmt,
 
         if(gDispModule->bMuteStatus == FALSE) {
             DISP_OUT_SetMute(AMP_DISP_OUT_HDMI, 1);
-            MV_OSAL_Task_Sleep(100);
+            // MV_OSAL_Task_Sleep(100);
             gDispModule->bMuteStatus = TRUE;
         }
         Ret = MV_VPPOBJ_SetHdmiVideoFmt(gDispModule->iVppHandle,
CSMAI2-68-trivial2-3.patch (938 bytes)   
CSMAI2-68-trivial-2.patch (416 bytes)   
diff --git a/amp_wrapper.h b/amp_wrapper.h
index d3c34e8..72b2c41 100644
--- a/amp_wrapper.h
+++ b/amp_wrapper.h
@@ -19,7 +19,7 @@
 #define AREN_OUTPUT_PORT_NUM   1
 #define AREN_OUTPUT_PORT_NUM_PASS 3
 
-#define MAX_BUF_NUM      (347)
+#define MAX_BUF_NUM      (30)
 #define MAX_BUF_SIZE     (188 * 128)
 #define WRAP_UP(a, b)    (((a) + (b) - 1) / (b) * (b))
 #define BUF_ACTURAL_SIZE (MAX_BUF_SIZE * MAX_BUF_NUM)
CSMAI2-68-trivial-2.patch (416 bytes)   
outputimage_5136.zip (1,183,686 bytes)

(SW) Jerry Lin

2023-07-11 15:03

developer   ~0013606

Hi Sangmin Choi,

upload to
/release_by_fxn/swan_test_image/20230711_mantis1496/usb_bfx-ua300_V19.540.9_SD.zip

Jerry

(ALTech) Sangmin Choi

2023-07-24 10:42

developer   ~0013677

Hello, Jerry,

Could you please build a test firmware after applied attached patches? SD only.

vendor/synaptics/btv-hal-impl/synaptics
BPM-20920.patch

Thank you.
Sangmin Choi.
BPM-20920.patch (1,198 bytes)   
diff --git a/hal_av_pipeline.c b/hal_av_pipeline.c
old mode 100644
new mode 100755
index 93df252..d3c89a8
--- a/hal_av_pipeline.c
+++ b/hal_av_pipeline.c
@@ -344,17 +344,14 @@ int  AVP_Stop(AVP_HANDLE player) {
 	ALOGD("BTF|%s|%d|IN| player=%x setStreamMute\n", __FUNCTION__,__LINE__, player);
 	AVP_SetAudioMute(player, TRUE);
 
-	HRESULT ret;
-    amp_log(socPlayerInfo->pip ? 1:0, "AMP_VOUT_SetLastFrameMode, socPlayerInfo->amp_vout in" );
-	AMP_RPC(ret, AMP_VOUT_SetLastFrameMode, socPlayerInfo->amp_vout, socPlayerInfo->playerConfig.keep_last_frame ? AMP_VOUT_KEEPLASTFRAME:0);
-	assert(ret == SUCCESS);
+    HRESULT ret;
 	
-	amp_zapping_mgr_stop_service(player);
-	
-	if( !socPlayerInfo->playerConfig.keep_last_frame ) {
-       AMP_RPC(ret, AMP_DISP_Push_BuildInFrame, socPlayerInfo->amp_disp, socPlayerInfo->pip ? 1:0, 0);
-    }
+	if( !socPlayerInfo->playerConfig.keep_last_frame ) {
+       AMP_RPC(ret, AMP_DISP_Push_BuildInFrame, socPlayerInfo->amp_disp, socPlayerInfo->pip ? 1:0, 0);
+    }
 	
+    amp_zapping_mgr_stop_service(player);
+
 #ifdef AMP_LOG_WRITE_FILE
     if(logFp[socPlayerInfo->pip ? 1:0] != NULL)
         fclose(logFp[socPlayerInfo->pip ? 1:0]);
BPM-20920.patch (1,198 bytes)   

(SW) Jerry Lin

2023-07-24 15:51

developer   ~0013683

Hi Sangmin Choi,

upload to
/release_by_fxn/swan_test_image/20230724_mantis1496/usb_bfx-ua300_V19.540.13_SD.zip

Jerry

(ALTech) Sangmin Choi

2023-07-31 16:09

developer   ~0013773

Hello, Jerry,

Could you please build a test image with following branch? (SD only)

path : bootable/recovery
branch : skb/BPM-20665

Thank you.
Sangmin Choi.

(SW) Jerry Lin

2023-07-31 18:14

developer   ~0013777

Hi Sangmin Choi,

upload to
/release_by_fxn/swan_test_image/20230731_mantis1496/usb_bfx-ua300_V19.540.17_SD.zip

Jerry

(ALTech) Sangmin Choi

2023-08-02 09:45

developer   ~0013798

Hello, Jerry,

Could you please build a test image with following branch and patch? (SD only)

path : bootable/recovery
branch : skb/BPM-20665

device/synaptics/sequoia
BPM-20665.patch

Thank you.
Sangmin Choi.
BPM-20665.patch (701 bytes)   
diff --git a/sepolicy/common/recovery.te b/sepolicy/common/recovery.te
index c2555ca..ebe6e17 100644
--- a/sepolicy/common/recovery.te
+++ b/sepolicy/common/recovery.te
@@ -27,7 +27,7 @@ get_prop(recovery, vendor_platform_prop)
 # SPTEK add
 ####################################################################
 allow recovery self:capability { net_admin };
-allow recovery self:udp_socket { create ioctl write read setattr bind };
+allow recovery self:udp_socket { create ioctl write read setattr bind setopt };
 allow recovery self:tcp_socket { create ioctl write read  connect  setopt  getopt getattr};
 allow recovery port:tcp_socket { name_connect};
 allow recovery self:capability { sys_time };
BPM-20665.patch (701 bytes)   

(SW) Jerry Lin

2023-08-02 11:02

developer   ~0013800

Hi Sangmin Choi,

upload to
/release_by_fxn/swan_test_image/20230802_mantis1496/usb_bfx-ua300_V19.540.17_SD.zip

Jerry

(ALTech) Sangmin Choi

2023-08-23 12:48

developer   ~0013956

Hello, Jerry,

Could you please build a test image? (SD only)

syna-release/ampsdk
CSMSKBSBLT-211-ignore-the-request.patch

Thank you.
Sangmin Choi.
CSMSKBSBLT-211-ignore-the-request.patch (1,072 bytes)   
diff --git a/amp/src/service/sound/src/sound_hdmi_mgr.c b/amp/src/service/sound/src/sound_hdmi_mgr.c
index 55051b2..5bdd01e 100755
--- a/amp/src/service/sound/src/sound_hdmi_mgr.c
+++ b/amp/src/service/sound/src/sound_hdmi_mgr.c
@@ -786,11 +786,17 @@ HRESULT snd_hdmi_mgr_set_format(SOUND_MANAGER *pSndMgr, UINT32 Format, BOOL bPlu
 
     SNDSRV_ENTER();
     SNDSINK_CHK_NULL(pSndMgr);
-    SNDLOGW("LastSetupPortIdx %d,"
+    SNDLOGE("LastSetupPortIdx %d,"
             " UserHdmiFmt0x%x, RealHdmiFmt 0x%x, Format %x, bPlug=%d\n",
             pSndMgr->uiLastSetupPortIdx,
             pSndMgr->UserHdmiFmt, pSndMgr->RealHdmiFmt, Format, bPlug);
 
+    /* when user prefer format,real format and wish format is identical, do nothing */
+    if( (pSndMgr->UserHdmiFmt==pSndMgr->RealHdmiFmt) && (pSndMgr->UserHdmiFmt==Format) ){
+        SNDLOGE("Ignore the request when all cases are identical");
+        return SUCCESS;
+    }
+
     AmpMemClear(&stHdmiDataCfg, sizeof(HDMI_DATA_CFG));
     AmpMemClear(&stCapHdmiDataCfg, sizeof(HDMI_DATA_CFG));
 

(SW) Jerry Lin

2023-08-23 19:39

developer   ~0013961

Hi Sangmin Choi,

upload to
/release_by_fxn/swan_test_image/20230823_mantis1496/usb_bfx-ua300_V19.540.23_SD.zip

Jerry

(ALTech) Sangmin Choi

2023-08-30 14:27

developer   ~0014031

Hello, Jerry,

/release_by_fxn/swan_test_image/20230823_mantis1496/usb_bfx-ua300_V19.540.23_SD.zip

This firmware didn't play VOD.

I built the ND firmware which is applied CSMSKBSBLT-211-ignore-the-request.patch, but I can play the VOD.

I checked the logcat but I didn't know why.
And, the patch doesn't look related with this issue.

Could you please check your local repositories if there is other modification or not?
And, could you please build this firmware again?

Thank you.
Sangmin Choi.

(SW) Jerry Lin

2023-08-30 17:34

developer   ~0014039

Hi Sangmin Choi,
Which branch are you use ?
BFX-UA300_5.4.0 or BFX-UA300_5.4.1 ?

Jerry

(ALTech) Sangmin Choi

2023-08-30 17:41

developer   ~0014040

Hello, Jerry,

Please use the 540 branches.

(SW) Jerry Lin

2023-08-30 19:02

developer   ~0014041

Hi Sangmin Choi,

upload to
/release_by_fxn/swan_test_image/20230830_mantis1496/usb_bfx-ua300_V19.540.23_SD.zip

I remove all modified code and "out" folder

Jerry

(ALTech) Sangmin Choi

2023-08-31 12:56

developer   ~0014049

Hello, Jerry,

Your last test firmware still can't play HLS VOD.
I don't know what is the problem in logcat and the firmware I built has no problem.
I want to check if the device affects the playback or not.
Could you please give me the following 3,4 firmwares?

1. 540 / CSMSKBSBLT-211-ignore-the-request.patch / build by Sangmin / ND -> Can play HLS VOD
2. 540 / CSMSKBSBLT-211-ignore-the-request.patch / build by Jerry / SD -> Can NOT play HLS VOD
3. 540 / CSMSKBSBLT-211-ignore-the-request.patch / build by Jerry / ND ->
4. 540 / without patch / build by Jerry / SD ->

Thank you.
Sangmin Choi.

(SW) Jason Ling

2023-08-31 15:14

developer   ~0014053

Hi Sangmin,

I help Jerry build it

3. 540 / CSMSKBSBLT-211-ignore-the-request.patch / build by Jerry / ND ->
/release_by_fxn/tmp/CSMSKBSBLT-211/3

4. 540 / without patch / build by Jerry / SD ->
/release_by_fxn/tmp/CSMSKBSBLT-211/4

Please check it.

Thanks,
Jason

(ALTech) Sangmin Choi

2023-09-04 13:38

developer   ~0014068

Hello, Jerry,

Could you please build following test images? (SD only)

Firmware #1
540 branches
clean all repositories

Firmware #2
540 branches
clean all repositories
apply following patch

syna-release/ampsdk
CSMSKBSBLT-211-ignore-the-request_v2.patch

Thank you.
Sangmin Choi.
CSMSKBSBLT-211-ignore-the-request_v2.patch (951 bytes)   
diff --git a/amp/src/service/sound/src/sound_hdmi_mgr.c b/amp/src/service/sound/src/sound_hdmi_mgr.c
index 55051b2..54f3fbd 100755
--- a/amp/src/service/sound/src/sound_hdmi_mgr.c
+++ b/amp/src/service/sound/src/sound_hdmi_mgr.c
@@ -791,6 +791,16 @@ HRESULT snd_hdmi_mgr_set_format(SOUND_MANAGER *pSndMgr, UINT32 Format, BOOL bPlu
             pSndMgr->uiLastSetupPortIdx,
             pSndMgr->UserHdmiFmt, pSndMgr->RealHdmiFmt, Format, bPlug);
 
+    /* when user prefer format is RAW_MAIN,
+            real format and wish format is identical, do nothing */
+    if( AMP_SND_HDMI_FORMAT_RAW_MAIN == Format ){
+        if( (pSndMgr->UserHdmiFmt==pSndMgr->RealHdmiFmt) && (pSndMgr->UserHdmiFmt==Format) ){
+            SNDLOGE("Ignore the request when all cases are identical");
+            return SUCCESS;
+        }
+    }
+
+
     AmpMemClear(&stHdmiDataCfg, sizeof(HDMI_DATA_CFG));
     AmpMemClear(&stCapHdmiDataCfg, sizeof(HDMI_DATA_CFG));
 

(SW) Jerry Lin

2023-09-04 17:36

developer   ~0014072

Hi Sangmin Choi,

upload to

FW1: /release_by_fxn/swan_test_image/20230904_mantis1496/clear/usb_bfx-ua300_V19.540.23_SD.zip
FW2: /release_by_fxn/swan_test_image/20230904_mantis1496/apply_v2/usb_bfx-ua300_V19.540.23_SD.zip

Jerry

(ALTech) Wooshin Kang

2023-10-11 10:16

developer   ~0014260

Hi Jerry

Please build test image using ( 540 Lasted src + Attached patch + Attached APK)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Patch apply method
copy file 0009-auro-use-headroom-for-demo.patch to "syna-release/ampsdk"

* use below command
$ cd syna-release/ampsdk
$ git apply 0009-auro-use-headroom-for-demo.patch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0009-auro-use-headroom-for-demo.patch (66,403 bytes)   
>From fb13ea7dc3bfced39f4e434c0372c2b9509c69f6 Mon Sep 17 00:00:00 2001
From: mclee <mclee@innopiatech.com>
Date: Wed, 11 Oct 2023 10:20:21 +0900
Subject: [PATCH] [auro] use headroom for demo - news(x1.2), music(x1.5),
 movie(x1.8) - headroom default on

---
 amp/src/ddl/comp_app/lib/libddlauro.so | Bin 71628 -> 88756 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/amp/src/ddl/comp_app/lib/libddlauro.so b/amp/src/ddl/comp_app/lib/libddlauro.so
index 90f9d03b6ba60c0d85bcbdda3d74a0a9a739fafa..fa6224bed29959c50f94297e1b532ab0ca22ea0e 100755
GIT binary patch
literal 88756
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
C?{owJ

delta 27508
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

-- 
2.25.1

(ALTech) Wooshin Kang

2023-10-11 10:18

developer   ~0014261

I missed APK file,

(ALTech) Wooshin Kang

2023-10-11 15:45

developer   ~0014265

Hi jerry,

This is new one, please use it.

Thanks,

(SW) Jerry Lin

2023-10-11 19:31

developer   ~0014268

Hi Wooshin,
Please download from ALT Server.
/release_by_fxn/swan_test_image/20231011_mantis1496/usb_bfx-ua300_V19.540.23_SD.zip

Jerry

(ALTech) Wooshin Kang

2023-10-20 08:35

developer   ~0014354

Hi jerry,

Please build test image after apply attached library.
Libraries are 4. So I need 4 images for each lib.
Only SD images

Thanks.
auro_headroom.7z (26,662 bytes)

(SW) Jerry Lin

2023-10-20 13:52

developer   ~0014359

Hi Wooshin,
Please download from ALT Server.
/release_by_fxn/swan_test_image/20231020_mantis1496

Jerry

(SW) Jerry Lin

2023-10-23 16:06

developer   ~0014379

Hi Wooshin,
Please download from ALT Server.
/release_by_fxn/swan_test_image/20231023_mantis1496

Jerry

(ALTech) Sangmin Choi

2023-11-03 08:49

developer   ~0014459

Hello, Jerry,

Could you please build a test firmware after applied attached patches? SD only.

This firmware should be built under 540 branches.

device/synaptics/sequoia
0001-volume_table_change.diff

vendor/skb/prebuilts/boot_config
0002-volume_table_change.diff

Thank you.
Sangmin Choi.
0002-volume_table_change.diff (140 bytes)   
diff --git a/version.txt b/version.txt
index 80eb37f..edaa042 100644
--- a/version.txt
+++ b/version.txt
@@ -1 +1 @@
-19.540.23
+19.540.923
0001-volume_table_change.diff (759 bytes)   
diff --git a/audio_policy_engine_default_stream_volumes.xml b/audio_policy_engine_default_stream_volumes.xml
index f99d683..e304ca2 100755
--- a/audio_policy_engine_default_stream_volumes.xml
+++ b/audio_policy_engine_default_stream_volumes.xml
@@ -131,11 +131,11 @@
 		<point>20,-4000</point>
 		<point>60,-1700</point>
 		<point>100,0</point>-->
-		<point>1,-5000</point>
-        <point>5,-4806</point>
-        <point>9,-4613</point>
-        <point>12,-4467</point>
-        <point>15,-4322</point>
+		<point>1,-7323</point>
+        <point>5,-6694</point>
+        <point>9,-6065</point>
+        <point>12,-5436</point>
+        <point>15,-4806</point>
         <point>18,-4177</point>
         <point>21,-4032</point>
         <point>25,-3839</point>

(SW) Jerry Lin

2023-11-03 12:03

developer   ~0014463

Hi Sangmin Choi,
Please download the test FW from ALT Server.
/release_by_fxn/swan_test_image/20231103_mantis1496/usb_bfx-ua300_V19.540.923_SD.zip

Jerry

(ALTech) Wooshin Kang

2023-11-07 09:30

developer   ~0014483

Hi Jerry,

Auro test library is changed, so skb did request test image again.
In previous version, lib for Auro is change.

Please build again using attached lib like below.
====================================================
It should be built using below combination.
(540 lasted version + test home ui for auro + new auro lib)
auro_headroom_11:7.7z (26,433 bytes)

(SW) Jerry Lin

2023-11-07 14:34

developer   ~0014487

Hi Wooshin,
Please download test FW from ALT Server.
/release_by_fxn/swan_test_image/20231107_mantis1496

Jerry

(ALTech) Sangmin Choi

2023-11-13 09:45

developer   ~0014511

Hello, Jerry,

Could you please build a test firmware after applied attached patches? SD only.

This firmware should be built under 540 branches.

vendor/synaptics/common
135759_c39a9af8.patch

Thank you.
Sangmin Choi.
135759_c39a9af8.patch (12,451 bytes)   
commit c39a9af8cea1642e81d8b3892f59b0e7f3046f0d
Author: Hong Song <Hong.Song@synaptics.com>
Date:   Mon Apr 19 14:11:20 2021 +0800

    keymaster - MMCEI-9460 - CL#135759 - merged
    
    Change-Id: If3094fc70a7e21bcfa0bf2c08a241633ee4cbe5a

diff --git a/keymaster/4.0/hal/include/syna_cryptokey.h b/keymaster/4.0/hal/include/syna_cryptokey.h
index 1bba939..29f0651 100755
--- a/keymaster/4.0/hal/include/syna_cryptokey.h
+++ b/keymaster/4.0/hal/include/syna_cryptokey.h
@@ -278,6 +278,8 @@ public:
         return 0;
     }
 
+
+
 protected:
     keymaster_error_t CreateKey(keymaster_key_origin_t key_origin,
                       const keymaster_key_param_set_t* params,
@@ -286,10 +288,12 @@ protected:
                       keymaster_key_blob_t* key_blob,
                       keymaster_key_characteristics_t** characteristics);
 
+
     inline const uint8_t* GetKey() const {
         return iKey;
     }
 
+
     inline int GetKeySizeFromCurve (keymaster_ec_curve_t Curve){
 
        int SzBits = 0;
@@ -345,6 +349,10 @@ protected:
 
     inline keymaster_error_t SetKeySize(size_t key_size_bits) {
         keymaster_error_t lRes = SupportedKeySize(key_size_bits);
+
+        LOG_FUNCTION_ENTRY;
+
+
         if (lRes == KM_ERROR_OK) {
             if(iAlgo == KM_ALGORITHM_TRIPLE_DES) {
                 /*
@@ -370,6 +378,9 @@ protected:
                 iKeySize += 1;
             }
         }
+
+        dbg_log("keysize:%d\n", iKeySize);
+        LOG_FUNCTION_EXIT(lRes);
         return lRes;
     }
 
diff --git a/keymaster/4.0/hal/syna_asymcryptokey.cpp b/keymaster/4.0/hal/syna_asymcryptokey.cpp
index acd5f68..f02b925 100755
--- a/keymaster/4.0/hal/syna_asymcryptokey.cpp
+++ b/keymaster/4.0/hal/syna_asymcryptokey.cpp
@@ -347,6 +347,7 @@ keymaster_error_t RsaKey::SetImportKeySize(size_t /*key_size_bits*/)
 size_t RsaKey::GetKeyBufferSize() const
 {
     //N(iKeySize) + PubExpo(4 bytes) + (P, Q, DP, DQ, QInv) of size iKeySize/2 each
+    dbg_log("GetKeyBufferSize for RSA:%d\n", iKeySize + sizeof(uint32_t) + 5 * (iKeySize >> 1));
     return (iKeySize + sizeof(uint32_t) + 5 * (iKeySize >> 1));
 }
 
diff --git a/keymaster/4.0/hal/syna_cryptokey.cpp b/keymaster/4.0/hal/syna_cryptokey.cpp
index 7939ee6..f70fa34 100755
--- a/keymaster/4.0/hal/syna_cryptokey.cpp
+++ b/keymaster/4.0/hal/syna_cryptokey.cpp
@@ -142,15 +142,21 @@ keymaster_error_t CryptoKey::CreateKey(keymaster_key_origin_t key_origin,
                       keymaster_key_characteristics_t** characteristics)
 {
     keymaster_error_t lRes = KM_ERROR_OK;
+
+    LOG_FUNCTION_ENTRY;
+
     lRes = ValidateKeyParam(*params);
     if (lRes == KM_ERROR_OK) {
-        lRes = SetupKeyBuffer();
+
+        if(key_origin != KM_ORIGIN_SETUP) lRes = SetupKeyBuffer();
+
         if (lRes == KM_ERROR_OK) {
             if (key_origin == KM_ORIGIN_GENERATED) {
                 if (lRes == KM_ERROR_OK)
                     lRes = GenerateSecureKey();
             } else if (key_origin == KM_ORIGIN_SETUP) {
                 /*nothing to do*/
+                dbg_log("KM_ORIGIN_SETUP\n");
             } else if (key_origin == KM_ORIGIN_IMPORTED) {
                 lRes = ImportSecureKey(key_format, key_data);
                 if (lRes == KM_ERROR_OK) {
@@ -175,6 +181,9 @@ keymaster_error_t CryptoKey::CreateKey(keymaster_key_origin_t key_origin,
        if (key_origin == KM_ORIGIN_GENERATED)
           lRes = KM_ERROR_INVALID_ARGUMENT;
     }
+
+    LOG_FUNCTION_EXIT(lRes);
+
     return lRes;
 }
 
@@ -233,6 +242,8 @@ uint32_t CryptoKey::CalcSizeofKeyblob (
     uint32_t key_blob_size = KEY_CHKSUM_SIZE+KEY_HANDLE_SIZE+sizeof(keymaster_key_origin_t)+sizeof(params->length);
     keymaster_key_param_t *pParam = NULL;
 
+    LOG_FUNCTION_ENTRY;
+
     if(params->length > 0) {
         pParam = params->params;
         for (index = 0; index < params->length; index++) {
@@ -269,7 +280,10 @@ uint32_t CryptoKey::CalcSizeofKeyblob (
 
     key_blob_size += sizeof(uint32_t);  /*iKeySize*/
     key_blob_size += sizeof(uint32_t);  /*iKeySizeInBits*/
-    key_blob_size += iKeySize;          /*iKey*/
+    key_blob_size += GetKeyBufferSize(); //iKeySize;          /*iKey*/
+
+    LOG_FUNCTION_EXIT(0);
+
     return key_blob_size;
 }
 
@@ -288,6 +302,8 @@ keymaster_error_t CryptoKey::StoreParamsToKeyblob (
     keymaster_key_param_t *pParam = NULL;
 
 
+    LOG_FUNCTION_ENTRY;
+
     if(!key_blob || !params) {
         return KM_ERROR_INVALID_ARGUMENT;
     }
@@ -370,8 +386,9 @@ keymaster_error_t CryptoKey::StoreParamsToKeyblob (
         memcpy((void *)(key_blob->key_material+offset), &iKeySizeInBits, sizeof(iKeySizeInBits));
         offset += sizeof(iKeySizeInBits);
         /*store iKey*/
-        memcpy((void *)(key_blob->key_material+offset), iKey, iKeySize);
-        offset += iKeySize;
+
+        memcpy((void *)(key_blob->key_material+offset), iKey, GetKeyBufferSize());
+        offset += GetKeyBufferSize();
    }
 
    lRes = iImpl->EncryptKeyData((key_blob->key_material_size - (KEY_HANDLE_SIZE + KEY_CHKSUM_SIZE)),
@@ -406,6 +423,7 @@ keymaster_error_t CryptoKey::StoreParamsToKeyblob (
        memcpy((void *)(key_blob->key_material), &sum, KEY_CHKSUM_SIZE);
    }
 
+    LOG_FUNCTION_EXIT(lRes);
    return lRes;
 }
 
@@ -421,7 +439,11 @@ keymaster_error_t CryptoKey::RetrieveParamsFromKeyblob (
     uint32_t offset = 0;
     uint32_t index = 0;
 
-    if(!key_blob && !key_origin && !params && !key_format && !key_data) {
+
+    LOG_FUNCTION_ENTRY;
+
+
+    if(!key_blob || !key_origin || !params || !key_format || !key_data) {
         return KM_ERROR_INVALID_ARGUMENT;
     }
 
@@ -499,19 +521,31 @@ keymaster_error_t CryptoKey::RetrieveParamsFromKeyblob (
          * Let's check if it reach the end of key_blob.
          * if not, we should be able to Retrieve iKey/iKeySize/iKeySizeInBits
          */
+
         if((offset+8) <= key_blob->key_material_size) {
             memcpy(&iKeySize,key_blob->key_material+offset, sizeof(iKeySize));
             offset += sizeof(iKeySize);
             memcpy(&iKeySizeInBits,key_blob->key_material+offset, sizeof(iKeySizeInBits));
             offset += sizeof(iKeySizeInBits);
         }
-        if((offset+iKeySize) <= key_blob->key_material_size) {
-            iKey = (UINT8 *)malloc(iKeySize);
-            memcpy(iKey, key_blob->key_material+offset, iKeySize);
-            offset += iKeySize;
+
+
+        SetupKeyBuffer();
+        size_t uKeyBufSize = GetKeyBufferSize();
+
+        if((offset+uKeyBufSize) <= key_blob->key_material_size) {
+
+          //  iKey = (UINT8 *)malloc(uKeyBufSize);
+            memcpy(iKey, key_blob->key_material+offset, uKeyBufSize);
+            offset += uKeyBufSize;
+            dbg_log("uKeyBufSize:%d\n", uKeyBufSize);
+        }else{
+
+            dbg_log("cannot copy to key in %s, %d, %d, %d, %d\n", __FUNCTION__, offset, iKeySize, uKeyBufSize, key_blob->key_material_size);
         }
     }
 
+    LOG_FUNCTION_EXIT(lRes);
     return lRes;
 }
 
@@ -560,21 +594,31 @@ keymaster_error_t CryptoKey::SetupKey(
     keymaster_key_format_t key_format;
     internal_keymaster_blob_t key_data;
 
+    LOG_FUNCTION_ENTRY;
+
     memset(&params, 0x0, sizeof(internal_keymaster_key_param_set_t));
     memset(&key_data, 0x0, sizeof(internal_keymaster_blob_t));
     lRes = RetrieveParamsFromKeyblob((const keymaster_key_blob_t *)key_blob, &key_origin,
                     &params, &key_format, &key_data);
 
+    dbg_log("key_origin:%d\n", key_origin);
+
     //KM_TAG_KEY_SIZE will default to the size of the key provided
-    SetImportKeySize(key_data.data_length << 3);
+
     if(key_origin == KM_ORIGIN_GENERATED) {
         key_origin = (keymaster_key_origin_t)KM_ORIGIN_SETUP;
+    }else if(key_origin == KM_ORIGIN_IMPORTED){
+        SetImportKeySize(key_data.data_length << 3);
     }
+
     lRes = CreateKey(key_origin, (keymaster_key_param_set_t *)&params,
                       key_format, (keymaster_blob_t *)&key_data, key_blob, characteristics);
 
+
     lRes = RecycleParamsMemory(&params, &key_data);
 
+    LOG_FUNCTION_EXIT(lRes);
+
     return lRes;
 }
 
@@ -854,14 +898,14 @@ keymaster_error_t CryptoKey::ValidateKeyParam(const keymaster_key_param_set_t& p
             SetKeyActivationTime(params[index].date_time);
             break;
         case KM_TAG_ORIGINATION_EXPIRE_DATETIME:
-            ALOGD("ValidateKeyParam() params[%d].tag = KM_TAG_ORIGINATION_EXPIRE_DATETIME\n", index);
+            ALOGD("ValidateKeyParam() params[%d].tag = KM_TAG_ORIGINATION_EXPIRE_DATETIME, %llu\n", index, params[index].date_time);
             SetKeyOriginationExpireTime(params[index].date_time);
             break;
         case KM_TAG_CREATION_DATETIME:
             ALOGD("ValidateKeyParam() params[%d].tag = KM_TAG_CREATION_DATETIME\n", index);
             break;
         case KM_TAG_USAGE_EXPIRE_DATETIME:
-            ALOGD("ValidateKeyParam() params[%d].tag = KM_TAG_USAGE_EXPIRE_DATETIME\n", index);
+            ALOGD("ValidateKeyParam() params[%d].tag = KM_TAG_USAGE_EXPIRE_DATETIME, %llu\n", index, params[index].date_time);
             SetKeyUsageExpireTime(params[index].date_time);
             break;
         case KM_TAG_MIN_SECONDS_BETWEEN_OPS:
@@ -922,9 +966,11 @@ keymaster_error_t CryptoKey::SetupKeyBuffer()
     keymaster_error_t lRes = KM_ERROR_UNSUPPORTED_KEY_SIZE;
     size_t            uKeyBufSize = 0;
     //A valid Key-size must be set by now
+    LOG_FUNCTION_ENTRY;
     if (iKeySize > 0) {
         lRes = KM_ERROR_OK;
         if (iKey) {
+            dbg_log("delete key content\n");
             delete iKey;
             iKey = NULL;
         }
@@ -934,6 +980,7 @@ keymaster_error_t CryptoKey::SetupKeyBuffer()
             lRes = KM_ERROR_MEMORY_ALLOCATION_FAILED;
         }
     }
+    LOG_FUNCTION_EXIT(lRes);
     return lRes;
 }
 
diff --git a/keymaster/4.0/hal/syna_km_context.cpp b/keymaster/4.0/hal/syna_km_context.cpp
index d8b34d2..b8d4e52 100755
--- a/keymaster/4.0/hal/syna_km_context.cpp
+++ b/keymaster/4.0/hal/syna_km_context.cpp
@@ -763,17 +763,23 @@ keymaster_error_t SynaKMContext::Begin(keymaster_purpose_t purpose,
 
     LOG_FUNCTION_ENTRY
     //Find the crypto key that corresponds to key blob
+    LogHex("keyblob:", key->key_material, 16);
+
     CryptoKey* pCryptoKey = iKeyList->Find(key);
     if (!pCryptoKey) {
+        dbg_log("no key is found, set up key\n");
         lRes = SetupKey((keymaster_key_blob_t*)key, &pCharacteristics);
     }
 
     pCryptoKey = iKeyList->Find(key);
     if (pCryptoKey) {
         keymaster_algorithm_t algo = pCryptoKey->GetAlgorithm();
+
         CryptoOperation* pOp = CryptoOperation::CreateCryptoOperation(algo, purpose, &lRes);
+        dbg_log("CreateCryptoOperation return lRes = %d\n", lRes);
         if (pOp) {
             lRes = pOp->Init(pCryptoKey, in_params, out_params, operation_handle);
+            dbg_log("Init return lRes = %d\n", lRes);
             if (lRes == KM_ERROR_OK) {
                 iOperationList->Add(pOp);
             } else {
diff --git a/keymaster/4.0/hal/syna_km_util.cpp b/keymaster/4.0/hal/syna_km_util.cpp
index 07ac069..df59239 100755
--- a/keymaster/4.0/hal/syna_km_util.cpp
+++ b/keymaster/4.0/hal/syna_km_util.cpp
@@ -476,8 +476,11 @@ keymaster_error_t IsValidDigest(keymaster_algorithm_t algo, keymaster_digest_t d
 //Check whether the given time has lapsed current time
 bool VerifyTimeLapsed(uint64_t timestamp, uint32_t timeout)
 {
-    time_t givenTime = (timestamp + timeout) / 1000;
-    return difftime(time(NULL), givenTime) > 0;
+    uint64_t givenTime = (timestamp + (uint64_t) timeout) / 1000;
+    uint64_t cur_time = (uint64_t) time(NULL);
+    dbg_log("timestamp[%llu], timeout:%u\n", timestamp, timeout);
+    dbg_log("giventime[%llu], curtime[%llu]\n", givenTime, cur_time);
+    return (cur_time > givenTime);
 }
 
 //HMAC Signature verification
diff --git a/keymaster/4.0/hal/syna_rsaoperation.cpp b/keymaster/4.0/hal/syna_rsaoperation.cpp
index 94e39a2..e83cf94 100755
--- a/keymaster/4.0/hal/syna_rsaoperation.cpp
+++ b/keymaster/4.0/hal/syna_rsaoperation.cpp
@@ -166,7 +166,13 @@ keymaster_error_t RsaOperation::InitOperation(const uint8_t* pKey, size_t uKeySi
 {
     keymaster_error_t lRes = KM_ERROR_OK;
     uint64_t uPubExpo = iKey->GetPubExponent();
+
+    LOG_FUNCTION_ENTRY;
+
     lRes = iImpl->InitRsaOperation(iPurpose, iPadding, iDigest, uPubExpo, pKey, uKeySize, &iHandle);
+
+    LOG_FUNCTION_EXIT(lRes);
+
     return lRes;
 }
 
135759_c39a9af8.patch (12,451 bytes)   

(SW) Jerry Lin

2023-11-13 11:29

developer   ~0014513

Hi Sangmin ,
Please download test FW from ALT Server.
/release_by_fxn/swan_test_image/20231113_mantis1496

Jerry

(ALTech) Wooshin Kang

2023-11-14 09:02

developer   ~0014523

Hi Jerry,

Synaptics gave patch like below.

https://synacsm.atlassian.net/servicedesk/customer/portal/173/CSMSKBSBLT-228?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0Z3QiOiJhbm9ueW1vdXMtbGluayIsInFzaCI6IjI4MmRiMWZmYWVlMmM0MTY5YzkxYjAxMzY2NDY0ZjlkZDc1NTRiNDNhOWYzODNiNzdjZmYxZTNkOWFlNDdmM2MiLCJpc3MiOiJzZXJ2aWNlZGVzay1qd3QtdG9rZW4taXNzdWVyIiwiY29udGV4dCI6eyJ1c2VyIjoiMTEyNzAiLCJpc3N1ZSI6IkNTTVNLQlNCTFQtMjI4In0sImV4cCI6MTcwMTgxNjY0NiwiaWF0IjoxNjk5Mzk3NDQ2fQ.w70XGjQispD8Y-POJfEi-Bpkw_1X8XaBTWrSG4f6w9I

Please build test image using below combination. I will compare zapping speed.
( 540.22 + patch )

Thanks.

(SW) Jerry Lin

2023-11-14 09:58

developer   ~0014526

Hi Wooshin,
I can not download the patch from syna jira.
Please help to download it.
And please help to check the patch that i copy from syna jira.

Jerry
CSMSKBSBLT-228.patch (846 bytes)   
diff --git a/amp_wrapper.c b/amp_wrapper.c
index 6c3ee82..e58d591 100644
--- a/amp_wrapper.c
+++ b/amp_wrapper.c
@@ -1336,6 +1336,13 @@ void amp_start_pipeline(AVP_HANDLE *player) {
     amp_log(socPlayerInfo->pip ? 1:0, "amp_start_pipeline 9 in, AVP_START");
     AMP_RPC(ret, AMP_DMX_SetState, socPlayerInfo->amp_dmx,  AMP_EXECUTING);
     assert(ret == SUCCESS);
+
+    AMP_RPC(ret, AMP_CLK_SetAVSyncOption, socPlayerInfo->amp_clk, 0, AMP_CLK_OPT_SYNC_SHOW_FIRST, TRUE, 0, 0);
+    assert(ret == SUCCESS);
+
+    AMP_RPC(ret, AMP_CLK_SetAVSyncOption, socPlayerInfo->amp_clk, 0, AMP_CLK_OPT_SYNC_DYNAMIC_SYNC, TRUE, 0, 0);
+    assert(ret == SUCCESS);
+
 /*
     if(socPlayerInfo->avOffset.delay_time_ms == 0) {
         AMP_RPC(ret, AMP_CLK_SetAVSyncOption, socPlayerInfo->amp_clk, 0, AMP_CLK_OPT_SYNC_SHOW_FIRST, TRUE, 0, 0);
CSMSKBSBLT-228.patch (846 bytes)   

(ALTech) SY Yoon

2023-11-14 16:33

developer   ~0014537

Hi Mr. Jerry Lin,

Why don't you contact Synaptics directly ?
If you ask Jiamin Mao, PM, then they will help you.
We are same situation with you.
Please check it and let us know the result.

Best Regards,
SuhYoung YOON

(ALTech) Wooshin Kang

2023-11-21 08:56

developer   ~0014593

Hi Jerry,

Don't you get patch from synaptic yet. ? or below is built image using that patch.

thanks.

(SW) Jerry Lin

2023-11-21 09:14

developer   ~0014594

Hi Wooshin,
Please download test FW from ALT Server.
/release_by_fxn/swan_test_image/20231114_mantis1496

Sorry ! I forgot to update message in mantis.

Jerry

(ALTech) Sangmin Choi

2023-11-27 15:28

developer   ~0014633

Hello, Jerry,

Could you please build a test firmware using below manifest xml files? SD only.

BFX-UA300_19.540.22_test_BPM-18714.xml

Thank you.
Sangmin Choi.
BFX-UA300_19.540.22_test_BPM-18714.xml (157,215 bytes)   
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <remote fetch="." name="skb"/>
  <remote fetch="ssh://git@bitbucket.skbroadband.com:7999/stbbcf" name="skb_bcf"/>
  <remote fetch="ssh://git@bitbucket.skbroadband.com:7999/btv-ux" name="skb_btv-res"/>
  <remote fetch="ssh://git@bitbucket.skbroadband.com:7999/stbpac" name="skb_prebuilts"/>
  <remote fetch="ssh://git@bitbucket.skbroadband.com:7999/btfaml" name="soc-aml"/>
  <remote fetch="ssh://git@bitbucket.skbroadband.com:7999/soc-syna" name="soc-syna"/>
  <remote fetch="ssh://git@bitbucket.skbroadband.com:7999/soc-syna" name="sptek-syna"/>
  
  <default remote="skb" revision="BFX-UA300_5.4.0" sync-j="4"/>
  
  <project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="anypoint_adv" path="vendor/skb/prebuilts/anypoint_adv" remote="skb_prebuilts" revision="b0b55baac2c311df1e135f6f419750b1fa6e0382" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="release/common" groups="skb_prebuilts" name="apple_tvplus" path="vendor/skb/prebuilts/apple_tvplus" remote="skb_prebuilts" revision="cb04dd7f75f450011d60822d1f63eccb1ae71828" sync-c="true" sync-tags="false" upstream="release/common"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="boot_config" path="vendor/skb/prebuilts/boot_config" remote="skb_prebuilts" revision="10563c927efad59016451a61ab18d0fd652052c0" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="boot_script" path="vendor/skb/prebuilts/boot_script" remote="skb_prebuilts" revision="8c8943d6b5225cc9e3938f7d299c7ae832aa3588" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="bootanimation" path="vendor/skb/prebuilts/bootanimation" remote="skb_prebuilts" revision="8db40dd449eb9b226ae3332ae5751a198548598e" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BTF_API_LEVEL_7" groups="skb_btf,testauto" name="btf-prebuilts" path="vendor/skb/framework/btf" remote="skb_bcf" revision="c5d700eb9bd3c72a3189f2be7daf0e5b0a650b4b" upstream="BTF_API_LEVEL_7"/>
  <project dest-branch="BTF_API_LEVEL_7/bg5ct/android-10" groups="skb_btf" name="btf-sepolicy" path="vendor/skb/framework/btf-sepolicy" remote="soc-syna" revision="5ce780b8a323de0a70c95f04c1b5353bab7e7e60" upstream="BTF_API_LEVEL_7/bg5ct/android-10"/>
  <project dest-branch="BTF_API_LEVEL_7/bg5ct" groups="foxconn" name="btv-hal-impl_bfx-ua300" path="vendor/synaptics/btv-hal-impl/bfx-ua300" remote="soc-syna" revision="d1de063bd387ef4cab24f19c982b008d65f47404" upstream="BTF_API_LEVEL_7/bg5ct"/>
  <project dest-branch="BTF_API_LEVEL_7/bg5ct/ua300" groups="synaptics" name="btv-hal-impl_synaptics" path="vendor/synaptics/btv-hal-impl/synaptics" remote="soc-syna" revision="ebf2ecc8e9395ba02713f6c6728670c24619ee6f" upstream="BTF_API_LEVEL_7/bg5ct/ua300"/>
  <project dest-branch="AI2MAX-5.4.0" groups="skb_btv-res" name="btv-stb-images-AI2MAX" path="vendor/skb/prebuilts/skb_btv-menu_image" remote="skb_btv-res" revision="6d36779d00a2d6640c73d2207f50d476921df4cf" sync-c="true" sync-tags="false" upstream="AI2MAX-5.4.0"/>
  <project dest-branch="KIDS-GUIDE_5.4.0" groups="skb_btv-res" name="btv-stb-kids_guide" path="vendor/skb/prebuilts/skb_btv-kids_guide" remote="skb_btv-res" revision="9ecc90a4fbbb10a186fdd10b226d7dffd560e7ad" sync-c="true" sync-tags="false" upstream="KIDS-GUIDE_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-android-device-synaptics-sequoia" path="device/synaptics/sequoia" revision="1509600c53d3daec9b7420e0af0035b78c721e9e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-android-device-synaptics-sequoia-kernel" path="device/synaptics/sequoia-kernel" revision="da723f5fab2e9ea6613933f9762f31d545b674a7" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-android-vendor-imagination" path="vendor/imagination" revision="af2fae1b0295d874f9180b422d6c5643561c1d5a" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-android-vendor-marvell" path="vendor/marvell" revision="b4c58be93ab7a21cde3032f7c7ca2d197247eba7" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-android-vendor-synaptics-build" path="vendor/synaptics/build" revision="b675af8a4981a16d14f0494069d5e9efd88c02b6" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-android-vendor-synaptics-common" path="vendor/synaptics/common" revision="9efce808bce9bfb55eaee51369752864f1f0c80c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-android-vendor-synaptics-external" path="vendor/synaptics/external" revision="af5ec221befb13beee3a28af88c28a8c12e62577" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-android-vendor-synaptics-overlays" path="vendor/synaptics/overlays" revision="8cc855831612b9a8264a6ea7dafe28c67c429afb" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-android-vendor-synaptics-playready" path="vendor/synaptics/playready" revision="50966be7751f604a4132add1c78bbccb73a0bc51" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-android-vendor-synaptics-sequoia" path="vendor/synaptics/sequoia" revision="1f8a321a7d8d627eb91052ca82f88e0de77c62ae" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-android-vendor-synaptics-sequoia-gtvs" path="vendor/synaptics/sequoia/gtvs" revision="d8dee560ed672cec7a0a8d93b7d987847285e72a" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-android-vendor-synaptics-vsxxx" path="vendor/synaptics/vsxxx" revision="af0b915f5e53aeae061b3589ceab7fe3c38a49d2" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-android-vendor-synaptics-widevine" path="vendor/synaptics/widevine" revision="cddf1ce2860f99cd3643479f36dda926236be774" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release" path="syna-release" revision="9660154eda97b598d5d8cd972f127afc2eb72951" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ampsdk" path="syna-release/ampsdk" revision="a19767a78c021ab04bf6d0e1a0b12a7e1650c449" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ampsdk-amp-src-ddl-acodec-codec-codec_mpeg" path="syna-release/ampsdk/amp/src/ddl/acodec/codec/codec_mpeg" revision="afa64c4b81f2b7887106dc1439bd8132ce38d96b" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ampsdk-amp-src-ddl-acodec-codec-codec_wma" path="syna-release/ampsdk/amp/src/ddl/acodec/codec/codec_wma" revision="88e6b7342e415040f5ea5e48ba7db71fcd0409b0" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ampsdk-amp-src-ddl-acodec-codec-dts_parser" path="syna-release/ampsdk/amp/src/ddl/acodec/codec/dts_parser" revision="281cf8a3df7d715e964c3c6fa1b6ac09e755d134" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ampsdk-amp-src-ddl-comp_dvs" path="syna-release/ampsdk/amp/src/ddl/comp_dvs" revision="48b674b378fb7bc5238f1f83016ef4af3a43693f" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ampsdk-drm-widevine" path="syna-release/ampsdk/drm/widevine" revision="f164fcefa5109f1f89b4c094cd280151fe4a9f28" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-application" path="syna-release/application" revision="af0ee0ee5b7328b95482c8e0045f17595fe0f355" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-boot" path="syna-release/boot" revision="c7cf2476258615764e5be0a26557e826775f76f2" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-boot-preboot-prebuilts" path="syna-release/boot/preboot/prebuilts" revision="b8beb6248b731a48fed5d39ca7e4248ae9744158" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-build" path="syna-release/build" revision="7487c1cdbb479e04ae86d5597d801c198d1cbd8b" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-configs" path="syna-release/configs" revision="0a97ca2eb2d2b9ce9b9ac3a131e667b48853cc09" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-drm" path="syna-release/drm" revision="6f514665aca4e933cccd2087ddafbce7b46001e8" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-drm-pr_syna_ca" path="syna-release/drm/pr_syna_ca" revision="0a404aabe99a9adac0aad3673445b378b049db77" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-drm-pr_syna_ca-3x" path="syna-release/drm/pr_syna_ca/3x" revision="c1cc4d1fb82ec412135b966c5247af5d044e7f52" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-drm-pr_syna_ca-4x" path="syna-release/drm/pr_syna_ca/4x" revision="755ddad3bb76f7c39d0d50029327b45b2de13c01" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-external" path="syna-release/external" revision="0f26d29735e8ac99b1dd07c98dcab42a5b2b13fb" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-factory" path="syna-release/factory" revision="cd43b6122314219e9b2b092dcfe48a549d67206e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-fw_enc" path="syna-release/fw_enc" revision="aae380e2fb4bb54cbfcd0ca09c46a6f0fb89a50b" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-fw_enc-dts_hd" path="syna-release/fw_enc/dts_hd" revision="7268f03dd5cee719a916b2cb7094889611af64fe" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-fw_enc-mp3" path="syna-release/fw_enc/mp3" revision="e51a25bf955306c72f397c2029fc6a1d0f7ed427" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-fw_enc-ms11" path="syna-release/fw_enc/ms11" revision="62ca440675056fc868906615043dd995a783debb" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-fw_enc-neural" path="syna-release/fw_enc/neural" revision="9509e3f7ba80df3f24d92f2401adec5fe698e2f7" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-fw_enc-srs" path="syna-release/fw_enc/srs" revision="b80050379229541eb6c9e26144e6ed5b3efdbdf9" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-linux_4_9_q" path="syna-release/linux_4_9_q" revision="d010ba1c3c6fce5a3c5c1d84a3e80fe9c9e59338" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-osal" path="syna-release/osal" revision="11fb01d6cf01a70becf0a622f647a8a0a2d3da73" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-security" path="syna-release/security" revision="2a52ca4fedf2f31c921bd1d24308490136b5560c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-sysroot-android" path="syna-release/sysroot/android" revision="ce624e34d150f55e8e63ef08a8d237c1231483a4" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-sysroot-linux-gtb" path="syna-release/sysroot/linux-gtb" revision="893f0c01ee25538c176f29eda65ad9d0cd80bd6a" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-sysroot-linux-rootfs" path="syna-release/sysroot/linux-rootfs" revision="b382699d5efabd721cb2113d86f4698cbaa73e09" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-sysroot-linux-yocto" path="syna-release/sysroot/linux-yocto" revision="d902f6a579510fa49f0c56b9b57402acf7fe64f0" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-sysroot-linux-yocto-72" path="syna-release/sysroot/linux-yocto-72" revision="0294cfe7aa91b32c8e99def976d353464a1b6973" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ta_app" path="syna-release/ta_app" revision="101b32099379dc46bd4995897af56fd51336be8c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ta_enc" path="syna-release/ta_enc" revision="d9ab0518c6ddfb2787a3f6f67b1b2dae66d50957" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ta_enc-dv" path="syna-release/ta_enc/dv" revision="e5b1502b17fc44b0c083de22e810e2c033330e36" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ta_enc-libdtscore.ta" path="syna-release/ta_enc/libdtscore.ta" revision="9bb0ca3d0ddfe5dadb15ea0e41c74f514bf9427f" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ta_enc-libdtshd.ta" path="syna-release/ta_enc/libdtshd.ta" revision="107d84be469c00761a35b3dd6593c2873cc1d108" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ta_enc-libsrstruvol.ta" path="syna-release/ta_enc/libsrstruvol.ta" revision="defd453def303fa8ef02042b200cead23c83d5e8" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ta_enc-libutctl.ta" path="syna-release/ta_enc/libutctl.ta" revision="61daf9a39de63af6c515aa9404bde217ddd585fd" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ta_enc-libwatermark.ta" path="syna-release/ta_enc/libwatermark.ta" revision="51c4669bcc14bff0318347b6689adbc508749c16" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ta_enc-libwma.ta" path="syna-release/ta_enc/libwma.ta" revision="9ba6329897ba54dfd52f1c0e2ac57a9bc0e9484c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ta_enc-pr40" path="syna-release/ta_enc/pr40" revision="f6c65ee24fe0ae04f55f10c5402373516cbed4e5" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ta_enc-wv15" path="syna-release/ta_enc/wv15" revision="7e2ce3d9774424102f608dfecdd35bd7fd91c874" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-tee" path="syna-release/tee" revision="a3a6117347ae11a72bab84cd3fbdd5e77bc9c383" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-toolchain" path="syna-release/toolchain" revision="abe9606da7cf381048ca0b3005cc81129065f163" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-common" path="device/common" revision="9d2a0d0c3aab8b698669bad9810bc52ac7f76dfb" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-generic-arm64" path="device/generic/arm64" revision="b2aea8576e3928e9add8b616740e56c1c5a811d2" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-generic-armv7-a-neon" path="device/generic/armv7-a-neon" revision="4f543eb2e85a4b140d829ba5e186c895923f67fc" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-generic-car" path="device/generic/car" revision="f75a4ff4e6ae7d26049d12d35855102a9cad3dad" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-generic-common" path="device/generic/common" revision="fa38a0a6fa43fdf34b81d37c3acd7dc6ecbd1230" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-generic-goldfish" path="device/generic/goldfish" revision="de1c3f0f8b2d26225da6edcf628c958952c58c06" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-generic-goldfish-opengl" path="device/generic/goldfish-opengl" revision="c643dd7253df3731b927f5e35daaa9bf98393b43" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-generic-lionhead" path="device/generic/lionhead" revision="2632d2f2e3565494e2ee3668e93195dc7bba6128" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-generic-mini-emulator-arm64" path="device/generic/mini-emulator-arm64" revision="672958caf7187fb355149546d886bf5f556ba3e6" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-generic-mini-emulator-armv7-a-neon" path="device/generic/mini-emulator-armv7-a-neon" revision="8c906010786b63d1549ea76e0dba2e0c0abc399b" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-generic-mini-emulator-x86" path="device/generic/mini-emulator-x86" revision="dc0e1610a68c17e4aaf3a2b06bf18062e8e5e4d0" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-generic-mini-emulator-x86_64" path="device/generic/mini-emulator-x86_64" revision="0e0dc9eefb1226163a215ac3bac16dedf15d88f9" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-generic-opengl-transport" path="device/generic/opengl-transport" revision="b2e1e50337c4290e0e75c9aa7ba76eda7edf4e6d" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-generic-qemu" path="device/generic/qemu" revision="698158b4e699ee4fc6395c200c0105b154d101ca" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-generic-trusty" path="device/generic/trusty" revision="620ea38a0a891db036d0104e9425b1489ed51a61" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-generic-uml" path="device/generic/uml" revision="6574b28ad7b947395c5770b9fdfc384904b305b8" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-generic-x86" path="device/generic/x86" revision="7a73a1f8e9fd691cb8f45aa9de303f3c39c3837a" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-generic-x86_64" path="device/generic/x86_64" revision="506952733fdebb5a2ef086b519ceebe86a95ae31" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-google-atv" path="device/google/atv" revision="857b2f6163066a5f2d5a68814d1c1ead70b56b99" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-google-contexthub" path="device/google/contexthub" revision="86028528d62951e8b323d0aba55a6e85563253a0" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-google-cuttlefish" path="device/google/cuttlefish" revision="bbd7feea9acc14a88ef6c5349ef0470c7cdc122c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-google-cuttlefish_common" path="device/google/cuttlefish_common" revision="903ddd5aa56ce72ec774d2c361752546b652457b" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-google-cuttlefish_kernel" path="device/google/cuttlefish_kernel" revision="d0d9709c5a19f5fd6cdfbec6aa4c100d5fd6e9e3" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-google-cuttlefish_vmm" path="device/google/cuttlefish_vmm" revision="7bea9f0d8c30ca81cbf217fb25605de195b16631" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-google-vrservices" path="device/google/vrservices" revision="c4155c007bd2c32fc6ee70f9212ad800836cef3d" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-linaro-hikey" path="device/linaro/hikey" revision="b27f1e3bac64f7c0ad7717185e9197e8d20f6b49" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-linaro-hikey-kernel" path="device/linaro/hikey-kernel" revision="aa2b4dd4f0abfb5771798050154d38ec6b14f21d" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-sample" path="device/sample" revision="d64a03ec745d8e4085ae65a868f1e8d66b2d9c4c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-ti-beagle-x15" path="device/ti/beagle_x15" revision="084da5b58a1e6b9e5c9c77783eee412c1ecdfe1e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="device-ti-beagle-x15-kernel" path="device/ti/beagle_x15-kernel" revision="e6da95f21f0586fea0770a2e7146b37a25a3b317" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts,testauto" name="digicap_btv-app" path="vendor/skb/prebuilts/digicap_btv-app" remote="skb_prebuilts" revision="4f9f1e6515436679d5290c9b1f6bb86d94c34be8" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="digicap_google-ad-ui" path="vendor/skb/prebuilts/digicap_google-ad-ui" remote="skb_prebuilts" revision="34a1bdad37ce24081bf8d3378af475290d6b2ee3" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="digicap_patch-ui" path="vendor/skb/prebuilts/digicap_patch-ui" remote="skb_prebuilts" revision="7b55e1bb3bec37d13644294ffd3fa62b1dade146" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="digicap_screensaver" path="vendor/skb/prebuilts/digicap_screensaver" remote="skb_prebuilts" revision="cb6e2c0f7be63d50e2428e742f244d6456cbcae5" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="digicap_zemkids" path="vendor/skb/prebuilts/digicap_zemkids" remote="skb_prebuilts" revision="e71cd17144e9469d163d6cc6da3f0e54bc4c6b0a" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BTF_API_LEVEL_7" groups="skb_btf" name="hal-interface" path="vendor/skb/framework/hal/interface" remote="skb_bcf" revision="78f52afd94a6c2f30156613b9156f6d290dea381" upstream="BTF_API_LEVEL_7"/>
  <project dest-branch="BTF_API_LEVEL_7" groups="skb_btf" name="hal-testsuite" path="vendor/skb/framework/hal/testsuite" remote="skb_bcf" revision="f2fb57ca3d76ddefdebb7be662ca89f56c28039c" upstream="BTF_API_LEVEL_7"/>
  <project dest-branch="BFX-UA300_5.4.0" name="kernel-configs" path="kernel/configs" revision="de0acd55a148e1f637ada24b9ec5a71f5b7877c1" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="kernel-tests" path="kernel/tests" revision="eb91f7a42c2bcafba2d72cc4fc35a5ed18f12c4f" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="pixtree_ads" path="vendor/skb/prebuilts/pixtree_ads" remote="skb_prebuilts" revision="45df61e4f11206ecd9efb34e35195bf014d2704e" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="pixtree_mlr" path="vendor/skb/prebuilts/pixtree_mlr" remote="skb_prebuilts" revision="8431ae8a19b36bf237cc846b8ea9ff5c528e65fe" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="pixtree_multiview" path="vendor/skb/prebuilts/pixtree_multiview" remote="skb_prebuilts" revision="b95d0072469d96ce4de487e020650aefc05396c4" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-art" path="art" revision="a3da03f27531d5455f462e61860c1ba70f16cf9f" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-bionic" path="bionic" revision="06cec80ecf95eecfe86cc797382c6cca50d4bb56" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-bootable-recovery" path="bootable/recovery" revision="11f86f1521003c4976a8e444a24c7ec30192a71b" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-build" path="build/make" revision="18278aad0e321cffb0d86e9eee505907a6f2d4ce" upstream="BFX-UA300_5.4.0">
    <copyfile dest="Makefile" src="core/root.mk"/>
    <linkfile dest="build/CleanSpec.mk" src="CleanSpec.mk"/>
    <linkfile dest="build/buildspec.mk.default" src="buildspec.mk.default"/>
    <linkfile dest="build/core" src="core"/>
    <linkfile dest="build/envsetup.sh" src="envsetup.sh"/>
    <linkfile dest="build/target" src="target"/>
    <linkfile dest="build/tools" src="tools"/>
  </project>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-build-blueprint" path="build/blueprint" revision="12bcfa5e9b104e2fceaf6a5207af0f718b01d96a" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-build-kati" path="build/kati" revision="7295712444f9e66fd0f52a298c1c39ccb0194ad4" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-build-soong" path="build/soong" revision="3faec0d31b06e7ab69adc70e856ae8ce22dc2e2f" upstream="BFX-UA300_5.4.0">
    <linkfile dest="Android.bp" src="root.bp"/>
    <linkfile dest="bootstrap.bash" src="bootstrap.bash"/>
  </project>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-compatibility-cdd" path="compatibility/cdd" revision="ea4ae2be066b0d4456d8e244191e336720ec2ad6" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-cts" path="cts" revision="26858e4353f9c22a65545402af055913beddcdc9" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-dalvik" path="dalvik" revision="9a1d3ec50905d5dabbd1ce393e5715df43cc3d1e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-developers-build" path="developers/build" revision="6e74514dfd0489fa1917f0bd11a012897a1b34f3" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-development" path="development" revision="98f649d3eafc4c5c9c5bccc6cf7500d345405ed3" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-aac" path="external/aac" revision="49735b01e00c4223f8ee1b958ba2ed8b2eb1d851" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-adeb" path="external/adeb" revision="2acddb3f946f381d4bfd5764e2a8e8263cce37fa" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-adhd" path="external/adhd" revision="068d7ff1228db05a89b69066f37816d76275fdf3" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-android-clat" path="external/android-clat" revision="1ccc24ce260cf949ddb0bc6994c49723ac2ecf7b" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-androidplot" path="external/androidplot" revision="b999712946d5141812fa2456e652db6b818d439e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-ant-glob" path="external/ant-glob" revision="45461635647e5481fa67473795782ce232e44fe1" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-antlr" path="external/antlr" revision="f207c52043d762d9cfbfd87986b5194c855a318a" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-apache-commons-bcel" path="external/apache-commons-bcel" revision="50e755197cd5de9d584414616d6d48877c92c649" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-apache-commons-compress" path="external/apache-commons-compress" revision="5334065cacdd3d1af2688d4617918ec0460708e1" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-apache-commons-math" path="external/apache-commons-math" revision="f30081520947ace21933c4f6ade062152c9b99f3" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-apache-harmony" path="external/apache-harmony" revision="b115c18dcfcc7433d89826f86a1f5889d3a6e37f" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-apache-http" path="external/apache-http" revision="952e3cf27f86ef4e797ba76d0ee108aae3d132fe" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-apache-xml" path="external/apache-xml" revision="2e0b59453e964e77dc2a6e4e1ea13baf03f690e9" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-archive-patcher" path="external/archive-patcher" revision="efcfb5be6f5eb4ae6b6cc755f997df055bc7b9ae" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-arm-optimized-routines" path="external/arm-optimized-routines" revision="0cb9739fdecbc11df2456807d8de81517b957a29" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-autotest" path="external/autotest" revision="b2010fc2ff94af33259503aa28daa6eb70ff4f2d" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-avb" path="external/avb" revision="119251268c594d115a1eff31b3ec32108b88b593" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-bcc" path="external/bcc" revision="db83b156a85bf531c967adb00e649d55d7238dc7" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-blktrace" path="external/blktrace" revision="9c82183ae7fb7dc4db787b8796c652a732b4d552" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-boringssl" path="external/boringssl" revision="98697a9a252a4146c61fbb86169b698d71da165d" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-bouncycastle" path="external/bouncycastle" revision="0f3518b026db034e671ce404372db92de5d55cfd" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-brotli" path="external/brotli" revision="e1fc10a642a91c85afb8cba684b75421c53c2288" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-bsdiff" path="external/bsdiff" revision="79d0acf62e249d4d3b38cd41e5b47bdee336145a" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-bzip2" path="external/bzip2" revision="1b9ad0911e00ef427383a47c908c1eba642e2728" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-caliper" path="external/caliper" revision="fed431afe2537c1d6c4930d58fe71ff0ca084c0b" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-capstone" path="external/capstone" revision="f1f1cbc054db7021d4167a96b55783e087e1b7b4" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-catch2" path="external/catch2" revision="bcfbb791d09e390fb545c03ca002e570f764d960" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-cblas" path="external/cblas" revision="61ee00692011385347a5dd1ad872556899a5cf7a" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-chromium-libpac" path="external/chromium-libpac" revision="2dadcc1c644dd0659e70ff4a318bc6074f06df78" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-chromium-trace" path="external/chromium-trace" revision="f4e722b911fcc6f7164026432de62a02ea3460fb" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-chromium-webview" path="external/chromium-webview" revision="5e34b35a24985062386376b8a85cd2576fe6067e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-clang" path="external/clang" revision="8343f599c9e1dda8e6c1bb779af323a673a052f9" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-cldr" path="external/cldr" revision="1a85e3902da68636ec8ae978935ef144b7ac0840" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-cmockery" path="external/cmockery" revision="9199c7bfafefea32d1884182fa655b6e4578c1c4" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-cn-cbor" path="external/cn-cbor" revision="d42fc3b49cda5c21aee74f0ec7bd06e1bcab8731" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-compiler-rt" path="external/compiler-rt" revision="570d57488d3e0dd5652b8482d63a1fdbe77d37cd" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-conscrypt" path="external/conscrypt" revision="292a0b54b8d32c092734f401c44bcc26b6bed9ac" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-crcalc" path="external/crcalc" revision="e4b2d03505a4f1b6ea42ba026fb05e996de6256b" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-cros-system_api" path="external/cros/system_api" revision="38114471918da3af3eee5b26c4e1d7d93517af5b" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-curl" path="external/curl" revision="c16c4b9bb9c38c8dbd9d5592ff9514a0b7a96283" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-dagger2" path="external/dagger2" revision="c4e59f861da9bac6beba095dad61a2443998c9dc" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-deqp" path="external/deqp" revision="9a91222da681fa09e277897cb335e7ab269742d8" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-deqp-deps-glslang" path="external/deqp-deps/glslang" revision="91b452070b219d80a82d98deb46c1514dc67f4b8" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-deqp-deps-spirv-headers" path="external/deqp-deps/SPIRV-Headers" revision="33de1aef825029c0cf7927a72df63ebe79745c6f" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-deqp-deps-spirv-tools" path="external/deqp-deps/SPIRV-Tools" revision="2e6244127648ea760172bf07ecf687a59ee7bd17" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-desugar" path="external/desugar" revision="67a575a8a97e134bd90b9d3b7570816668fbf4b1" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-dexmaker" path="external/dexmaker" revision="eb1081adb59449e3d280cad576f80ae226b027aa" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-dlmalloc" path="external/dlmalloc" revision="3a9d0af27a9f8fe533931a9e7ca843fd8e5b54f1" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-dng_sdk" path="external/dng_sdk" revision="c285687bc4085efe72e6c09485f8b93dcee738a4" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-dnsmasq" path="external/dnsmasq" revision="8e9578cd0779d081a1a56f575bc631a11a426a41" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-doclava" path="external/doclava" revision="60c1a9f10eab6a82d53ef4db65525b5bfe12de62" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-dokka" path="external/dokka" revision="68f88bd53a3ca988de051469b6b5bc6f383d83a3" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-drm_hwcomposer" path="external/drm_hwcomposer" revision="482ad9a71e6667bc291a7900bf174a92cfab775d" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-droiddriver" path="external/droiddriver" revision="b0838843e019a232f9a439f895a658f58a369bd0" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-drrickorang" path="external/drrickorang" revision="8f0f838b123a0e6cd05b1db06f20d1e50d8389c8" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-dtc" path="external/dtc" revision="246e8dd4bccca02440541f0235a9386e00e108c8" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-dynamic_depth" path="external/dynamic_depth" revision="ba6dbda80afea23fcb1e996dcf0dfb7b39283144" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-e2fsprogs" path="external/e2fsprogs" revision="47e3eb9aeacca10d8f77dea2ac8c6e7aee36c338" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-easymock" path="external/easymock" revision="afd503b419c6c25d6804e137f2642217f10ee980" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-eigen" path="external/eigen" revision="cf47824652b817dd4f12e81e4e0ba33225e46777" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-elfutils" path="external/elfutils" revision="76a46f02a97f7d0d8ee334e1fbdb981757a7f50c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-emma" path="external/emma" revision="c2aa4d22fc24295761a9c588836531a7b3d3d519" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-epid-sdk" path="external/epid-sdk" revision="7d6a6b63582f241b4ae4248bab416277ed659968" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-error_prone" path="external/error_prone" revision="293052176003db358872bc7391b0522b7a90b6d1" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-expat" path="external/expat" revision="fb854442b09893b3e5b16906992ace3e3d94cccd" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-f2fs-tools" path="external/f2fs-tools" revision="6225390356ca09449da9d65d0306b1f43099fa62" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-fdlibm" path="external/fdlibm" revision="3eea558350ee7509b210f3bfa91bb9f318121e31" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-fec" path="external/fec" revision="7049b92008752b4f939425ad91bf2aea86133216" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-flac" path="external/flac" revision="5751895771522cda77630a59274c33cffcc2f476" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-flatbuffers" path="external/flatbuffers" revision="24a2547fa55ca4aeb243021ba8ce72099b9b4c6b" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-fonttools" path="external/fonttools" revision="3573c3e336f800513596dce38d86abf12ddb25df" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-freetype" path="external/freetype" revision="3d18aea62aad363102c7e6520fec0c0d2b15794f" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-fsck_msdos" path="external/fsck_msdos" revision="909cef0d8e47dcedd5a88bc2b66fb242e3e772cb" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-fsverity-utils" path="external/fsverity-utils" revision="9851db065823f9fbb109fb4990323cd468da940c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-gemmlowp" path="external/gemmlowp" revision="18d2e95977453f4c06f999efe21301f5844fafa9" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-gflags" path="external/gflags" revision="0ff6b6b12c67175a1573050e2ded5f7951b989ea" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-giflib" path="external/giflib" revision="341c85ed68d932afcdd4481d361d9c1e65b453e2" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-glide" path="external/glide" revision="bd0082947a4c7b0058049c155d3c2517d462cc81" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-golang-protobuf" path="external/golang-protobuf" revision="f41fad3594ed04ed21267e8b9070098a092ffcf3" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-google-benchmark" path="external/google-benchmark" revision="91c277079ad177b9ce43a45e8848560d9c8570cd" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-google-breakpad" path="external/google-breakpad" revision="05728773737deb58a10cdbe29750152c13e400bf" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-google-fonts-arbutus-slab" path="external/google-fonts/arbutus-slab" revision="6a62a3a7283256e86faac4b4830e224f64946838" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-google-fonts-arvo" path="external/google-fonts/arvo" revision="bca8c9b2d370ba24ac0280d674b063f647a038bd" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-google-fonts-carrois-gothic-sc" path="external/google-fonts/carrois-gothic-sc" revision="344f772c902ad9f1097f74ee86540e13e6a0a047" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-google-fonts-coming-soon" path="external/google-fonts/coming-soon" revision="6528b7c529714c6982f547844c2c6ae7330be425" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-google-fonts-cutive-mono" path="external/google-fonts/cutive-mono" revision="32d5199d69463d2bec5d744ce76e38d756d8edeb" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-google-fonts-dancing-script" path="external/google-fonts/dancing-script" revision="23b7015fb197f99ab9833b4dd29ada3886fede6d" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-google-fonts-lato" path="external/google-fonts/lato" revision="139c627f77933688eeda9c16a575c1421af08808" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-google-fonts-rubik" path="external/google-fonts/rubik" revision="4a650db6c054b9b328eb1364d217a82296143d25" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-google-fonts-source-sans-pro" path="external/google-fonts/source-sans-pro" revision="ea1024073315464fc4ce2c5c0fccaf2ace8e18ac" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-google-fonts-zilla-slab" path="external/google-fonts/zilla-slab" revision="11c07b19edec7867860296950b14cf7b687240bd" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-google-fruit" path="external/google-fruit" revision="002c22e5f2dc9030d0b414a4fce547d9e30e0644" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-google-styleguide" path="external/google-styleguide" revision="749f7ae008c0d2dd9767fdfe202e6873e864a956" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-googletest" path="external/googletest" revision="c871e1df34e148591dcb7a45684cfaa561d09771" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-gptfdisk" path="external/gptfdisk" revision="43858e637cab22aa51e4e5c5ce4fea6dca72fb39" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-grpc-grpc" path="external/grpc-grpc" revision="e0b52d97439eeb05d8ae81cfb9ff5599d35c2ac9" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-grpc-grpc-java" path="external/grpc-grpc-java" revision="9b4f1a6db99b7cb7d46320e25e32317853b500dc" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-guava" path="external/guava" revision="6501bf9c8011e09d21905a4cf263d6f5625d1465" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-guice" path="external/guice" revision="0cb6b120e56be5ac654ef6bc0a9bf1d71905193f" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-hamcrest" path="external/hamcrest" revision="3d96516e09640e606da166e1dff54fb65c9a3a35" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-harfbuzz_ng" path="external/harfbuzz_ng" revision="5c6da22b1751b83076979c8d16f48054a7c58b19" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-honggfuzz" path="external/honggfuzz" revision="b7bc4c1a1a355ba5f92bd70520eb2af461324a14" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-hyphenation-patterns" path="external/hyphenation-patterns" revision="e5b0bea19621cc2467eca1d7ccbaf2b69f667862" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-icu" path="external/icu" revision="b46524157b29229c3a363f36b338523f4cbd66d4" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-image_io" path="external/image_io" revision="135f7c04ae98ce694efcfc6d9a0d2bc38f4c3653" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-imagemagick" path="external/ImageMagick" revision="99ea11c1088f282342625d806885715ce0c8414e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-ims" path="external/ims" revision="fe28bba97c0754b1fa057a55609ec86c7ccb1d24" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-iperf3" path="external/iperf3" revision="43306ae1c85a53d3efeb20bff0e11cb7377df2c0" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-iproute2" path="external/iproute2" revision="305dbada90d693b92f060b535941cceb38803fe1" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-ipsec-tools" path="external/ipsec-tools" revision="21841d18260f3247c0189c5157169c862632f0ec" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-iptables" path="external/iptables" revision="6938ab6bbf9d67c78f4221a866624ea3a8fdd38e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-iputils" path="external/iputils" revision="2c7b625904073fc96ab12e78a4ee6901c266f1d5" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-iw" path="external/iw" revision="4b78b765daf510d829d5f84f70ec059a82fad312" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-jacoco" path="external/jacoco" revision="93068ff728a7916816e7bbf832b05c717a106c26" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-jarjar" path="external/jarjar" revision="86f27246919d505829a3ccb4f021fe05d182edc1" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-javaparser" path="external/javaparser" revision="070ce799991ca3fb534c78ea92bc3d901baf992e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-javapoet" path="external/javapoet" revision="5110124a043357890d3e39b8452b0f0d4f2434d5" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-javasqlite" path="external/javasqlite" revision="c093f72b18ff45bd66c8884ef667399aa5891b9f" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-jcommander" path="external/jcommander" revision="c4d97985b3787276d6b391510250246c9ca94541" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-jdiff" path="external/jdiff" revision="833bb881bfdaa26f1148cc670c1bc374237a9126" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-jemalloc" path="external/jemalloc" revision="e3ff6769f8262841c98245e21b96dc67536759dc" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-jemalloc_new" path="external/jemalloc_new" revision="c10a6b7597eee4f1fa0319d1d7444efe7ef1d8a6" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-jline" path="external/jline" revision="478835d3c4603b43c28feb80912ff33f2c6811a6" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-jsilver" path="external/jsilver" revision="241cd1b197ee8e520aa6b04f277c3b29a2ff0fe4" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-jsmn" path="external/jsmn" revision="0ffcf7ec931258475f9585b808f45f1b388bfb80" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-jsoncpp" path="external/jsoncpp" revision="ef504fb429de168304bd227f421848adc0d8f325" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-jsr305" path="external/jsr305" revision="7b129a25432c1a1a3d1919499d8e2f583c753b8d" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-jsr330" path="external/jsr330" revision="4221d13d2c4079d3299c1d3265ed93564b84c78b" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-junit" path="external/junit" revision="b9c79460f7b94f7ec96a899cb60f46e44b78cce4" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-junit-params" path="external/junit-params" revision="ed4bc1eedea9e248f690ed682e4bd1b65863268d" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-kernel-headers" path="external/kernel-headers" revision="05215268d71368ebeab8238a512124cda35491a7" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-kmod" path="external/kmod" revision="a373f23216120dfa63ec6613ec99639880e35505" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-kotlinc" path="external/kotlinc" revision="4f7a87e483094e0819bafc63e9f8ef3a93c26a03" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-ksoap2" path="external/ksoap2" revision="6f08c590bd21f8cf228b71b1423f010cad243b06" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libaom" path="external/libaom" revision="927836483141500bff866cfd6492245318cc0550" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libavc" path="external/libavc" revision="fff822b732ebc20d913ea3cebe8808490b5fc4ba" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libbackup" path="external/libbackup" revision="be853756f8a215492b11ae545206d12b64d3a03c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libbrillo" path="external/libbrillo" revision="d4a88f4821ed402c6515d3cf5442a90c95c529e6" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libcap" path="external/libcap" revision="2db20a0a41de7cf42cc78f4c8a9b0ef2ed47f6b7" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libcap-ng" path="external/libcap-ng" revision="e17ed85e2a3b4691efd6975a02f8e56277cc93af" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libchrome" path="external/libchrome" revision="adc5c3d79d629fdb7e95ba1d05fe5195df11a116" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libcups" path="external/libcups" revision="19ed2a257fd7dfe5cee729712b6abd76e82dd0b3" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libcxx" path="external/libcxx" revision="29cbbe6156a5092438597c6b81a9ef55ef8d2949" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libcxxabi" path="external/libcxxabi" revision="a13dc9a5c69d05d8f285b0ab52e7b1ebadf4dc50" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libdaemon" path="external/libdaemon" revision="433dd14cb58a66737e158ad1331c02162a80f43f" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libdivsufsort" path="external/libdivsufsort" revision="abb3a16c4986c5f7dda62580c4f53c1930d4d1b9" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libdrm" path="external/libdrm" revision="2493ca265742b83a11531856451849ccf8c27f9f" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libese" path="external/libese" revision="6b796cbcd37992280254d8aadc0134ac2e2a12f8" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libevent" path="external/libevent" revision="7b67f806735671bbf49cc4cd74c59c7c105ce8e2" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libexif" path="external/libexif" revision="385b3070c1483306fa4c9df74310ec98ad9a4e9c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libffi" path="external/libffi" revision="699c661a0b644dff59fc4731f937b1d60719d5c8" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libgsm" path="external/libgsm" revision="1321c574befc82fd21a8ac38d36e1da1f3ffb336" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libhevc" path="external/libhevc" revision="6de7a93a5bde1a274eb1862aaaf515c1c5c57a7f" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libjpeg-turbo" path="external/libjpeg-turbo" revision="94a6b62bcb956bc4bf669945bd11eee9ee1e6551" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libkmsxx" path="external/libkmsxx" revision="7fa58fa14436676f36c62bead0471c2e367d0af0" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libldac" path="external/libldac" revision="93195ee38bd08ea8d9f87cbfa550635923f213de" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libmpeg2" path="external/libmpeg2" revision="89fdf58ed9b7abaa6379ec81a674f150a4a3aa89" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libmtp" path="external/libmtp" revision="cbe00e33b0314fdcf19b967ecbbaf294ed7701b7" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libnetfilter_conntrack" path="external/libnetfilter_conntrack" revision="a44a0c25fa5eb2575df464bd4d9e3e5c7da9ccf6" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libnfnetlink" path="external/libnfnetlink" revision="ac537e1d43625a99d8b266a362f4735762a42b66" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libnl" path="external/libnl" revision="173d924eceaa33fe7f731dfc692dd1e1cace80f3" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libogg" path="external/libogg" revision="d03fa44a8b3a0e94ec336c73025914eb515c9265" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libopus" path="external/libopus" revision="fcc38fd8cc63302c151a33819701075cd4cc9f6f" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libpcap" path="external/libpcap" revision="1974a6a92997523e1347f939a87ceb7c8339dd90" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libphonenumber" path="external/libphonenumber" revision="085c5ca0523fb92ddbf690e4423b9b6e00d943c4" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libpng" path="external/libpng" revision="5aff8307d1e1b29edb289ba676233df51436dfc6" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libprotobuf-mutator" path="external/libprotobuf-mutator" revision="19b7bf3edcedaea88dff58cc0d0bd595846a9db5" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libtextclassifier" path="external/libtextclassifier" revision="55a7382bc003e2d8cc7c989fa44d15dc3da319a7" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libunwind" path="external/libunwind" revision="689a2af196d2de66803f91dd224e423252d7f171" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libunwind_llvm" path="external/libunwind_llvm" revision="6352e01a22119b918b6bc30e5882b5a6f81cff80" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libusb" path="external/libusb" revision="e486a629e38d567d271f38f50deeccdac6b7fc62" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libusb-compat" path="external/libusb-compat" revision="c9943b468b27de46dc8a039d8e9973f442af0b8b" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libutf" path="external/libutf" revision="608c8fc0c45bcfefa6b6e48d5ecff190ed87a96a" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libvpx" path="external/libvpx" revision="fff265b1dbc63f28c367f01a920ed7e6166e6eef" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libvterm" path="external/libvterm" revision="2caab416f758b648c4034e9f22cb7b76c37203f0" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libxaac" path="external/libxaac" revision="d098d22eeb073bbc2bd917c4472248b464bb9a91" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libxcam" path="external/libxcam" revision="ecea4993be3fdd0bb18255484158104e7a0268a0" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libxkbcommon" path="external/libxkbcommon" revision="c74616faf095670759d130f9856c3ac3f0f639aa" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libxml2" path="external/libxml2" revision="e040d79711a7aabe472b9be796d57d4ef9006a19" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-libyuv" path="external/libyuv" revision="2db5718acece211b3d42a90e52a2cb49078011a3" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-linux-kselftest" path="external/linux-kselftest" revision="9d6eccd1c0bac7c5ac1e61a44e9a649d60be9441" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-llvm" path="external/llvm" revision="9b8d82b598b6242eeec9c35fe696727e9769feac" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-lmfit" path="external/lmfit" revision="3d36ea54c2216475d5e21da31ee0db4af24ebed1" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-ltp" path="external/ltp" revision="644dde483817f788df920f08fe587cd4b1efd92c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-lua" path="external/lua" revision="2574da328caa748be2497afb33bf47fe2f078c55" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-lz4" path="external/lz4" revision="4a2a1bbe1b0f7a75aa7b5decbb84bd7fd7463c98" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-lzma" path="external/lzma" revision="ef4369024dfe3778f0350c23117a352f9e8792ea" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-markdown" path="external/markdown" revision="41a03193095447f4ff110690171574ed8b721292" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-mdnsresponder" path="external/mdnsresponder" revision="ef76ab62ad22ba6c589e47099550dc3da0e803c9" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-mesa3d" path="external/mesa3d" revision="63d88d3b2dde7db2ae0ff382fe5d9fde1358740e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-microsoft-gsl" path="external/Microsoft-GSL" revision="d4e54c121f49d73c9e18aff087ce3dbafc2eab47" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-minigbm" path="external/minigbm" revision="676623b06ff2ccf44f5b859d091e5281235af628" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-minijail" path="external/minijail" revision="47c0fe93a41d0388c1f7a84de850820ec7326674" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-mksh" path="external/mksh" revision="e10ab3670da4b5b7d69f425d7b603cb1195e2f45" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-mockftpserver" path="external/mockftpserver" revision="1f487440520b7264f9134079441bce0adcf05af0" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-mockito" path="external/mockito" revision="48fe6754c6d2c693310aa2c8667c9e232c152c1a" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-mockwebserver" path="external/mockwebserver" revision="fd6ec7942c7b35516528cc90cc569cc274b001a6" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-modp_b64" path="external/modp_b64" revision="4b8457442799a0134f80b91d8dc4a888a3526d44" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-mp4parser" path="external/mp4parser" revision="91052b1c78aaf57b0db28a0b1e4f7b91e5d8fda6" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-mtpd" path="external/mtpd" revision="ca7860c5d1284f84e77ad850441b8bb00d1f4625" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-nanohttpd" path="external/nanohttpd" revision="9e6fdd3de9cf7ebc3a16c614147a28e63e62485e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-nanopb-c" path="external/nanopb-c" revision="872074ccde1d0da259e276d38eb052d2cd051408" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-naver-fonts" path="external/naver-fonts" revision="37ba854a88b1721057585111c7a1d7e5fd02b556" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-neon_2_sse" path="external/neon_2_sse" revision="7dff91633c4faf01e78427a0d1626853d96289ab" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-neven" path="external/neven" revision="a1182cb5e3ed263807e0c2233725874819411bce" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-newfs_msdos" path="external/newfs_msdos" revision="6cbd5a634d77914c907cdc00b5bb9fdb1fbc438d" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-nfacct" path="external/nfacct" revision="da41b2d4c2089f96a7fcb81a8b686046e635da7d" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-nist-pkits" path="external/nist-pkits" revision="5b6f1ee982bad06f7ba334df5b0584a59deba7b3" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-nist-sip" path="external/nist-sip" revision="d0a7687d3a0fff06ea6c1fe7d11cbff9864beb99" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-noto-fonts" path="external/noto-fonts" revision="cc5b6cd30dd72c6337c94b897f293429881d46e2" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-oauth" path="external/oauth" revision="2f79a0fdace446afd17a6b539b391be92214fd47" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-objenesis" path="external/objenesis" revision="a9381064619cdd7671f6e1200c3a7b9ecae3f8de" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-oj-libjdwp" path="external/oj-libjdwp" revision="e5c6f9d3821110df3781a8e9efbdada1305ab6b7" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-okhttp" path="external/okhttp" revision="c74e7275c41141c75c863aeb514453307ef0cfe4" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-one-true-awk" path="external/one-true-awk" revision="c1208415a3a2629b462f1826bc9a25d0bbbdbfdf" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-opencensus-java" path="external/opencensus-java" revision="610a17c2139830070c0dc56540d35aeb64222ec7" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-openssh" path="external/openssh" revision="b89310140157cfdbdc10f1b6583d10777e0f7159" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-owasp-sanitizer" path="external/owasp/sanitizer" revision="9690b9149ee4acb478242eac4c176e09b226e6a6" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-parameter-framework" path="external/parameter-framework" revision="a20e7087eaa8d95ff82f1777f0c21a836608fc57" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-pcre" path="external/pcre" revision="9bfe4731e753c5e605a03889a25564b889648762" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-pdfium" path="external/pdfium" revision="e0719dae86e45f46c78258828851881c90f54261" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-perf_data_converter" path="external/perf_data_converter" revision="f4ff85768cb3cd10d112939c358eee479f09dd00" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-perfetto" path="external/perfetto" revision="c4161c4aa879b8169685efcc6d3775e88ccc0a1b" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-piex" path="external/piex" revision="266dae4948aa714201a4fec8cf1e04400a30a65e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-ply" path="external/ply" revision="86d9e5d12a18f1e9ee822944646ee11e5937ea6f" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-ppp" path="external/ppp" revision="3ea5ca1afa0c45eb6bddd9a4937bc37f79f3d2cb" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-proguard" path="external/proguard" revision="4049237427905fe053ec217c082ce222f9edc814" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-protobuf" path="external/protobuf" revision="10b0fd4a65a5cb1688336e6d988d20229102c88f" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-protobuf-javalite" path="external/protobuf-javalite" revision="8f2ef780c041a8feed10b426eb954c2ff35c119e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-puffin" path="external/puffin" revision="bc7745523aef2d7f620ca16aa6ab11a8e38dc60e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-apitools" path="external/python/apitools" revision="9f2c4cc1426aacb15897099a6af9df82f399c112" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-appdirs" path="external/python/appdirs" revision="f26193e797c3f8f98aaa7e4afd555d2140b3fcb8" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-asn1crypto" path="external/python/asn1crypto" revision="1208f0f8b78755298ebb98a9f4ce5ef76814c708" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-atomicwrites" path="external/python/atomicwrites" revision="be4fa9eb05f3e640647e30454b6f1c2625c34811" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-attrs" path="external/python/attrs" revision="9c3e89fa82d47246ab9b257d202726da133de5b2" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-cachetools" path="external/python/cachetools" revision="0377d4b9d25a15e2cc4284730a551a42b7a10d22" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-cffi" path="external/python/cffi" revision="99013222844839c42437f16eace25f4e6a8a8b20" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-cpython2" path="external/python/cpython2" revision="fa37090dcba250d84c5aa7541ad37a598eecdc97" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-cpython3" path="external/python/cpython3" revision="3ef6c80ca3672b9b92dadb3a2e7314adb8fd9d66" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-cryptography" path="external/python/cryptography" revision="d45069b23a8e6d21df64d5b6f2553a7aa7ef9886" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-dateutil" path="external/python/dateutil" revision="d0da7aa65f2f29c46325bfb511aaa98790da47d3" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-dill" path="external/python/dill" revision="1de25625afbfa39196b4873a3aa45f09a076a97a" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-enum" path="external/python/enum" revision="9e4d9c3502331544e9d02205ab3b8df3e19f1c71" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-enum34" path="external/python/enum34" revision="51c247c15b53879958ccd94a95c403dd2a129da9" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-funcsigs" path="external/python/funcsigs" revision="4f1c377691d5ea3ea7725e35bb106083a5274071" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-future" path="external/python/future" revision="b785374c2b816d432e9936782e2b214b192c73fe" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-futures" path="external/python/futures" revision="89a8fe6ab75db54c27ab073acda54b57b3a1187b" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-gapic-google-cloud-pubsub-v1" path="external/python/gapic-google-cloud-pubsub-v1" revision="de91f91b3e0e8cd36ade69e16b831712e8181b5e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-google-api-python-client" path="external/python/google-api-python-client" revision="0d55ba86bf4bfdb1fdf4513e8801405a9fe8ae4c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-google-auth" path="external/python/google-auth" revision="d812ee31b10e88762eac9aeded408702e69280df" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-google-auth-httplib2" path="external/python/google-auth-httplib2" revision="f83658f8b9f7efd85af695bfdac0f00eeacfc5ed" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-google-cloud-core" path="external/python/google-cloud-core" revision="fb31d0b0d90ce27047c575c7cf7bd187d9df36e4" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-google-cloud-pubsub" path="external/python/google-cloud-pubsub" revision="0d91fcf1c53d49055575bfde7c6eb24f345c307b" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-google-gax" path="external/python/google-gax" revision="6654a7907460eeed423c35577b1ebdce0b94991e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-googleapis" path="external/python/googleapis" revision="48ac1fcf49fb23895e9eaa1514e3799a4e3cc6a9" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-grpc-google-iam-v1" path="external/python/grpc-google-iam-v1" revision="9bd66e8ca00804a0432ffeddc50d8a552daae05e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-grpcio" path="external/python/grpcio" revision="cac720b2a4a33f52bafbe652639ae1d368be74a2" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-httplib2" path="external/python/httplib2" revision="2f4eea998dae784f2c66396a73d525ba3f53bfb0" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-matplotlib" path="external/python/matplotlib" revision="19ad7ac700c9cf081418aa10ea5fa9c66a6b6973" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-mock" path="external/python/mock" revision="3a5218fcb8133b8d17a197b4fcd6c63bd11341d6" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-more-itertools" path="external/python/more-itertools" revision="f408bc183266f6b74c973549c9d0155d44ffda36" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-numpy" path="external/python/numpy" revision="111b7e10af77635c85bbbea1d0d35a649dc45ae1" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-oauth2client" path="external/python/oauth2client" revision="942e7726e2387c58f04cad67ea76bb1cd1378af8" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-olefile" path="external/python/olefile" revision="4b57860bf2c6d6eeb560d84adb20a09e3119d4d5" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-packaging" path="external/python/packaging" revision="b16fb277554ec5eb8e2fb2f9e7fedf95c60355de" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-parse" path="external/python/parse" revision="3e6bd0ef0c68250e04efab06e3d8bac9a723a79a" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-pillow" path="external/python/Pillow" revision="90ec1d6e7ee5c236f62e0a374a7065657ed3c15c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-pluggy" path="external/python/pluggy" revision="476c801f6efdea24faab8e234c8802ae3f6cb1dc" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-ply" path="external/python/ply" revision="a06f18c56dfe3148c43ec4ed712bba663923516d" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-proto-google-cloud-pubsub-v1" path="external/python/proto-google-cloud-pubsub-v1" revision="61035093eedea6edd613d98cfc64de2edcc42824" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-protobuf" path="external/python/protobuf" revision="16d0b123e41dc05cb82bd5d7e7194e37ecca5684" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-py" path="external/python/py" revision="bdf459ce1c2c467574869af67ad3c245fea6c031" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-pyasn1" path="external/python/pyasn1" revision="e04e2eb56045b29b920620c9d1f2f50e542aad09" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-pyasn1-modules" path="external/python/pyasn1-modules" revision="60293cd065c65befce9f3ab51a9ee5be4b6adae7" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-pycparser" path="external/python/pycparser" revision="775e41a49bd0233ed94f379fd99b5a5837e257b2" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-pyopenssl" path="external/python/pyopenssl" revision="3d7e6f31c43fe50e1147b4cfa49fd365a71295cb" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-pyparsing" path="external/python/pyparsing" revision="bf90b1fc3425729cb5768af5182a83edfeb7ba2b" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-pytest" path="external/python/pytest" revision="b3cd64044963b2b0eabaf60b7bd01a47e8395d29" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-requests" path="external/python/requests" revision="11d7236da2593f0908774fd027b175f4ff3e19fa" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-rsa" path="external/python/rsa" revision="ed5cd82fc8cb4f98aafeeaad550860132c27234a" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-scipy" path="external/python/scipy" revision="921f53db519df603fe9ff681a49dd18be838febf" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-setuptools" path="external/python/setuptools" revision="513ec3d6bb6f7786d02caf51720497a118b8f4be" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-six" path="external/python/six" revision="1544229cbc0b2936d0eb01b282cd901c8827e0a9" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-uritemplates" path="external/python/uritemplates" revision="7fed8f862ab03ae9240a222a45215b4b6930467e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-rapidjson" path="external/rapidjson" revision="908d461a0bb20eafba2a2c4c0f1003d9c9ab188a" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-rappor" path="external/rappor" revision="24abc025df68928ce97749b18521c4dbfa3faaf7" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-reactive-extensions-rxcpp" path="external/Reactive-Extensions/RxCpp" revision="fc1046c15d9830f24db7d5b20420a7bf884c1a4a" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-replicaisland" path="external/replicaisland" revision="f9d0bb69baae6a0c386e94d8c93372de3d3278c6" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-rmi4utils" path="external/rmi4utils" revision="eab13882ca581b5ef579eeeca311957f5fa2eada" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-robolectric" path="external/robolectric" revision="1c247020a97732c8ed951964a41c727f0d9f16f0" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-robolectric-shadows" path="external/robolectric-shadows" revision="6361005e0e3c3190f479e57b29f7ad52fdbca95b" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-roboto-fonts" path="external/roboto-fonts" revision="dd67dd85255323c0e363d84ac3fc5da45981eae3" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-rootdev" path="external/rootdev" revision="2b38487945c95283b77047a5470aa750af02f847" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-scapy" path="external/scapy" revision="2c6d26c6fc374a6b26b012ff4523a24e903d8329" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-scrypt" path="external/scrypt" revision="d6114db148b1ededd120de0cf2d1fc73ba1611ac" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-seccomp-tests" path="external/seccomp-tests" revision="2795191f28591534096193bf5a92124367786b88" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-selinux" path="external/selinux" revision="d4c9dbc74e2358126387303d2c8ac3d4cb08b19e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-setupcompat" path="external/setupcompat" revision="c96823b9f70d1a305a1a140121e46ade83256b3a" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-setupdesign" path="external/setupdesign" revision="2c496eae34f532f86bfbbe4c2558da06e23db511" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-sfntly" path="external/sfntly" revision="6bef7e4b4133b6ff3c2993a22aba17f3d59da5dc" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-shaderc-spirv-headers" path="external/shaderc/spirv-headers" revision="93474b8b1e381924a3f35c047b911400bbe7d65a" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-shflags" path="external/shflags" revision="6d6812d19da2747fdbee25421af1bd3583d75bf0" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-skia" path="external/skia" revision="e32c6a4f32581b03cafb260b7235f1d9b2d952ba" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-sl4a" path="external/sl4a" revision="ac701c2a59f1963c0de480796885f4fe381d376d" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-slf4j" path="external/slf4j" revision="4cd3f35de15e9270f3d5822c3f04a7c2b02189ea" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-smali" path="external/smali" revision="22f98607fe36e57e17485821998a70b5886c0de6" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-snakeyaml" path="external/snakeyaml" revision="5df2ff5ed7c5eebfaff21a8299019e21f648b0f6" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-sonic" path="external/sonic" revision="043398f5c456fc78cd8f5f2057e3a2e767eebfca" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-sonivox" path="external/sonivox" revision="4bfcc221f03d1a00a7a79ff614f90e41ed72a286" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-speex" path="external/speex" revision="fb97af103ba6e0af885a306d1bd014dd9a6f9234" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-spirv-llvm" path="external/spirv-llvm" revision="f32dfe34b9cd7ae79520171b6f6e2f8d855eecb3" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-sqlite" path="external/sqlite" revision="98f9a84e93fc0fb31980625387262ebcb452cfb3" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-squashfs-tools" path="external/squashfs-tools" revision="26929f59a759b06cb01c539ba45630958a8e3a76" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-strace" path="external/strace" revision="f1cb53780e02e7a9112b4aa53a132cae53a1fa15" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-stressapptest" path="external/stressapptest" revision="4d151d9e70555f617bd5c8859d9b3857be31fde3" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-subsampling-scale-image-view" path="external/subsampling-scale-image-view" revision="59fe3cb90269ed94757d37c02c7112fa6e9f78da" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-swiftshader" path="external/swiftshader" revision="308325006f3515492419bfbf12c30976a1b70493" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-syzkaller" path="external/syzkaller" revision="5ea79ae1c00598c57cc8706a4881c93507e6ba0c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-tagsoup" path="external/tagsoup" revision="5e9211080364ad4d30c5b97cf95ce825b740672a" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-tcpdump" path="external/tcpdump" revision="f50b8b00f4d40eaaeb7e0e3a398d441d27e63d54" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-tensorflow" path="external/tensorflow" revision="b582373a688a4f93d5a58d66aeffa023d2954154" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-testng" path="external/testng" revision="74aac3e648e789b5f462bd42debc34a16507dbad" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-tinyalsa" path="external/tinyalsa" revision="e84b02b2bfca1b51f743ad262ca0b62504d6c6b3" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-tinycompress" path="external/tinycompress" revision="4c77b6dd5f07c87b32a89b67e013fc4825d93685" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-tinyxml" path="external/tinyxml" revision="47a414e46f824c3d3d91c163db8c0e7fcb3dc8c6" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-tinyxml2" path="external/tinyxml2" revision="14b323f3dee3d562b31bc6d0044e7dedbd2201b8" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-toybox" path="external/toybox" revision="1e03c6d85f97833b61c5d7a9e28e835e695e9042" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-tremolo" path="external/tremolo" revision="ecb66da593feea3dca865adfa9ec3763fecbff7d" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-turbine" path="external/turbine" revision="bf6b7ecbccfacab31b6961987f72e8d7e5d668b7" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-u-boot" path="external/u-boot" revision="d90d5a69f9b7dc299bbefb74f4bafb43a1534a36" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-ukey2" path="external/ukey2" revision="cd9c844bd676ff9ff69a74bc49e157149a7f0918" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-unicode" path="external/unicode" revision="2cb210027e5cc5e631d1eb6f2907c4fbd8ba9527" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-v4l2_codec2" path="external/v4l2_codec2" revision="e7a24dbf9c98a7a391fa107725b4cc28b427cb37" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-v8" path="external/v8" revision="b4616666ca983583970b7dd2e30065d19f67a9a2" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-vboot_reference" path="external/vboot_reference" revision="df6d6b6e5280520b096fb1f565b758948bc872ee" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-virglrenderer" path="external/virglrenderer" revision="59f85c99c1d1c7db8ca543288e12507a11f7cc20" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-vixl" path="external/vixl" revision="b6f42c3fa351cfd086f3bb6d4e91c6a7b3946dfa" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-vogar" path="external/vogar" revision="830acd878a1be63095bf710fecdd8d22f4f8449b" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-volley" path="external/volley" revision="727b980e6d97b7cbbc61b987106315c7b68527f4" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-vulkan-headers" path="external/vulkan-headers" revision="e11ab4647e4eb4d29987011cd2a3e3226fc45e29" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-vulkan-validation-layers" path="external/vulkan-validation-layers" revision="932fa4323a1a4147fc0df55f120dbce86554ab2c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-walt" path="external/walt" revision="a391e66652451cae0fe2ab840892a522c1fe1bbd" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-wayland" path="external/wayland" revision="138d7eae1ca3a0551510476a72990ab32fa8d0bd" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-wayland-protocols" path="external/wayland-protocols" revision="c7f2a3e1857c3fea7808e9c693c920bdbe38c777" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-webp" path="external/webp" revision="0d4066cc8c442d65cfb7c70f9ab484545f813949" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-webrtc" path="external/webrtc" revision="cf0ffc92d1efdaaacf7e2c8045af754463e34813" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-wpa_supplicant_8" path="external/wpa_supplicant_8" revision="8e45b33c8d444fda1bec60d3f9ca13107a0ea017" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-wycheproof" path="external/wycheproof" revision="9fe3e8708733ac26153048a03b1b0f83a206ea51" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-xmp_toolkit" path="external/xmp_toolkit" revision="44d7e4d00ef6da63a75bf3a4f9296872cc4d2ac1" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-xz-embedded" path="external/xz-embedded" revision="51923a98b0af813e3db6a027d64471ee8710a4f2" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-xz-java" path="external/xz-java" revision="bd7892bb8927360cd34805bc332039154a2110e0" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-yapf" path="external/yapf" revision="45d923c40605a71867d174abcd04a1db76945651" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-zlib" path="external/zlib" revision="b10cc142496f209148331057a652746a510a67bb" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-zopfli" path="external/zopfli" revision="cf98102ba44eb494f53fc59b3fc59565e4015403" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-external-zxing" path="external/zxing" revision="65193280855e46d11bf5b44f1a7e49ec0c7bd57e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-av" path="frameworks/av" revision="d63579f8e068b263b2b0395e03ba71e690d9b905" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-base" path="frameworks/base" revision="bd9e85266382bd61b569ee0d87d018cd55fb642c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-compile-libbcc" path="frameworks/compile/libbcc" revision="fca09e63fc6a0b8ed94b4f5b23081201220f29b4" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-compile-mclinker" path="frameworks/compile/mclinker" revision="2ac86b5c4b9404666252c40980e645a9e2a73477" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-compile-slang" path="frameworks/compile/slang" revision="da9e9f979be20e805aee2f06a0bd82887d90c85a" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-ex" path="frameworks/ex" revision="4bbf496bb9b79ca7ac0a09f004c56a5b40aa2b22" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-hardware-interfaces" path="frameworks/hardware/interfaces" revision="1dd754a602594dace31a6a2045bc8e6f3bdcd1ca" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-layoutlib" path="frameworks/layoutlib" revision="e7178efb3ecd791282f16859885f10c0daeb5a81" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-minikin" path="frameworks/minikin" revision="5ae58a2e5f424c561cdf798163600e8c2453e1d1" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-ml" path="frameworks/ml" revision="c58430ceb02668c2c44a0ec081d216f73e21181d" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-multidex" path="frameworks/multidex" revision="745fa74857d2833e4d2dc3b0d6ab6e6cb6ff25f2" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-native" path="frameworks/native" revision="8aec9131c166725eb4791f4f40445dc2b5294386" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-bitmap" path="frameworks/opt/bitmap" revision="e9850af1278e499e427d08dbf40244f3622bd6db" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-calendar" path="frameworks/opt/calendar" revision="1aea8315ebe9cca6e9462ab02e9f4caf20c8cd58" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-car-services" path="frameworks/opt/car/services" revision="91d4b8c2bbc5718637500524c48b6b94fecdaf41" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-car-setupwizard" path="frameworks/opt/car/setupwizard" revision="962a30f834b8e6f060b6bfc1b05d08c972d0b59b" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-chips" path="frameworks/opt/chips" revision="81994513f7ca38d4b0c150d3afe71fbd2d2a1859" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-colorpicker" path="frameworks/opt/colorpicker" revision="c5a2e747f97ef2456c6f3dc008ae00f759407a23" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-datetimepicker" path="frameworks/opt/datetimepicker" revision="0cc1bd33ef04e91ed63d36f843a34c2141c319c3" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-net-ethernet" path="frameworks/opt/net/ethernet" revision="7282d58109a5ae4bf9e9d7223171af5617ec99e7" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-net-ike" path="frameworks/opt/net/ike" revision="c0736f6c497f1682a654a8bc1d72ff506afea72e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-net-ims" path="frameworks/opt/net/ims" revision="f1c2a9b68a2debdc5f47693876f2b1a7f3d7ee8e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-net-voip" path="frameworks/opt/net/voip" revision="9c0eb14158b923fff523c4e60b103dbcf6bf44ac" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-net-wifi" path="frameworks/opt/net/wifi" revision="075d59cb04b7271d4f892065a940c6dc1e5be4a0" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-photoviewer" path="frameworks/opt/photoviewer" revision="f90e5abc27d5c6694baabfd908ac36ef2dc11f1a" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-setupwizard" path="frameworks/opt/setupwizard" revision="13aa8a5c41ab3453c89c9948a9b7e8b1303f12be" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-telephony" path="frameworks/opt/telephony" revision="927e335389c9156cc34ee2b8aa9910ebd4f7e8d2" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-timezonepicker" path="frameworks/opt/timezonepicker" revision="4534b444443c8b9d4a19290471ea5b485f05789e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-vcard" path="frameworks/opt/vcard" revision="5e88fd3aaadf7d2a54d1fbb7e03004775801750f" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-rs" path="frameworks/rs" revision="9822b047aa4423932fa8dd9ace11cdf16d309d3b" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-wilhelm" path="frameworks/wilhelm" revision="1ddc48b76a494bb1a346db3ac21ee9a10f4fe24f" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-broadcom-libbt" path="hardware/broadcom/libbt" revision="23f3a6e8adb289dfa609903126697ca6c4990120" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-broadcom-wlan" path="hardware/broadcom/wlan" revision="71f18dd0868c4871f01d0bb17f9ba05129d1163b" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-google-apf" path="hardware/google/apf" revision="7c5d43915046b2d1af8930ae772c291ea28baac3" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-google-av" path="hardware/google/av" revision="2575735843e3d43a6f40e6c99968582ac42ed668" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-google-easel" path="hardware/google/easel" revision="fb72d9d16252ed63d9e1aa3465101ff19ac440a3" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-google-interfaces" path="hardware/google/interfaces" revision="c9e0aa4bec53caebdaa8d24abd934edd16db6271" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-interfaces" path="hardware/interfaces" revision="97c7f887477ae16d63a0d8fc2c523825a1ddb214" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-invensense" path="hardware/invensense" revision="a51c32c7d16d32462fcd2d3fc61474bb0ec56864" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-libhardware" path="hardware/libhardware" revision="da60173e142c7bd919d4bd5ad113a2ed9f93e3ba" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-libhardware_legacy" path="hardware/libhardware_legacy" revision="86d26ee18d5de516f1a48046164c9e84408a7cce" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-nxp-nfc" path="hardware/nxp/nfc" revision="947e0ba5d5f49cfd178357cf0808053ce5c45ec6" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-nxp-secure_element" path="hardware/nxp/secure_element" revision="313a6535990bd70a4cfc65d8b2bf8b40372b0920" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-audio" path="hardware/qcom/audio" revision="7c9cdb7c03a2d8d0809263923de60d6086113afe" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-bootctrl" path="hardware/qcom/bootctrl" revision="aaa8a9b93d685990b6c328aec76027bbad305de8" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-bt" path="hardware/qcom/bt" revision="6de1929161c4898b95a8b298bd3c9403fbbf00e2" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-camera" path="hardware/qcom/camera" revision="e0642e95ed62f9270098aa548f58b05eb9eb7ae9" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-data-ipacfg-mgr" path="hardware/qcom/data/ipacfg-mgr" revision="644ce1d7415430f775f99cfe2aa0ab3ad4090071" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-display" path="hardware/qcom/display" revision="3ade6ee7aa9b2555307d57f9ac80cf993ca84a58" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-gps" path="hardware/qcom/gps" revision="8525477f971ca33b56225813ad15e760cb3d1381" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-keymaster" path="hardware/qcom/keymaster" revision="ecfe142948adf4f82083d7333b6c778f3993842b" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-media" path="hardware/qcom/media" revision="3dbbe8f2863bca8ad38d3a7aa74aec0e62c092f2" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-msm8960" path="hardware/qcom/msm8960" revision="c25a431842a26b5756b58a9d4a42c776e0457ba2" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-msm8994" path="hardware/qcom/msm8994" revision="8e0383f6f41a2c49461f381c8d066ea21b20c674" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-msm8996" path="hardware/qcom/msm8996" revision="f0e7ce67121940312eaffeda9c4add56d63bf4e1" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-msm8998" path="hardware/qcom/msm8998" revision="47c6b775f99eec47a1be15d7ad36a4d2db4cbadf" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-msm8x26" path="hardware/qcom/msm8x26" revision="85c1a5282ae28663335e55ce96a4c0487de6c578" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-msm8x27" path="hardware/qcom/msm8x27" revision="8ff5c0057cbdecfa09410c1710ba043e191a2862" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-msm8x84" path="hardware/qcom/msm8x84" revision="582b414269d8472d17eef65d8a8965aa8105042f" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-power" path="hardware/qcom/power" revision="c9165f0cb184fcaf6888b7921b55033e8b50836c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-wlan" path="hardware/qcom/wlan" revision="bdf118c219179889f269d784eada3667176f4ec8" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-realtek" path="hardware/realtek" revision="04072136b48d500630ee979f7b3514630fe3a532" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-ril" path="hardware/ril" revision="2cf186902037b85470713ef32d1d138ae8fce7c2" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-st-nfc" path="hardware/st/nfc" revision="8efba78c1246d4b2ee5e00baca33d5126682e37b" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-st-secure_element" path="hardware/st/secure_element" revision="85f476304d5458ca16c38965e3e5d8492994bdfc" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-ti-am57x" path="hardware/ti/am57x" revision="90270170724d81013825feeac8f80fd89595388c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-libcore" path="libcore" revision="cd77f25ebb1261cfc3ef0d31d0635a896a130169" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-libnativehelper" path="libnativehelper" revision="bcc2b6fda49e42add4715882231215b2b3ada9d0" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-basicsmsreceiver" path="packages/apps/BasicSmsReceiver" revision="12456bdb267f8837b6ca3bd4439b59820a981930" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-bluetooth" path="packages/apps/Bluetooth" revision="ed34918d8088fb682e5782ebdfb0ea5d9725a524" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-browser2" path="packages/apps/Browser2" revision="37652f79d1a115bc2d920a68ad6846a23107c660" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-calendar" path="packages/apps/Calendar" revision="1938ad4fc2cba17bedfdb7f55760cd8132b27de3" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-camera2" path="packages/apps/Camera2" revision="f7232d71b864e700da0c9a476ee03a26a1e50d3c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-dialer" path="packages/apps/Car/Dialer" revision="5a81748b107f070fab44dc593d81aafc805393b5" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-externallibs" path="packages/apps/Car/externallibs" revision="bc16257053938c32c75d502cd990b4fec5a76be8" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-hvac" path="packages/apps/Car/Hvac" revision="68e29d345111c559fd46ac371a50a9ca6469fbde" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-latinime" path="packages/apps/Car/LatinIME" revision="11ce053ccc26b7f16084c8864b1a262490085593" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-launcher" path="packages/apps/Car/Launcher" revision="36c1f0f497682ea40cf9c954f094a5cb0b431d04" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-lenspicker" path="packages/apps/Car/LensPicker" revision="6f7aca1a5191ddbbf647f50d23fb9cd34addc913" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-libs" path="packages/apps/Car/libs" revision="8cc0cd1f258ecb5e731e3c8935616b468047f009" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-linkviewer" path="packages/apps/Car/LinkViewer" revision="a20936c7060b100857f8594a84c15e51da55176a" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-localmediaplayer" path="packages/apps/Car/LocalMediaPlayer" revision="650c10e72bc13a845f3c00c56a2b39fa90680965" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-media" path="packages/apps/Car/Media" revision="d520ec1d352dbaacbc503ff61d2dbc52ade178ba" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-messenger" path="packages/apps/Car/Messenger" revision="96d067c203ea1344c4b0d202743908587fb53009" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-notification" path="packages/apps/Car/Notification" revision="86d11e52d3387040ef5ef07215c6dd6a43d62f23" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-overview" path="packages/apps/Car/Overview" revision="645ca82c123da80a1dfd48cff978fe92a73816b3" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-radio" path="packages/apps/Car/Radio" revision="83f2221d92175434a75adf1cb0b19517b598eaa2" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-settings" path="packages/apps/Car/Settings" revision="5c4ef42dbafc34bea5d0e40533d0a4e56f9c3adb" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-stream" path="packages/apps/Car/Stream" revision="37abfd98677d0dedcc286c61900b3db2da9fe6bc" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-systemupdater" path="packages/apps/Car/SystemUpdater" revision="eda0afb194279e86d41087e8f2984fee0655e03c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-carrierconfig" path="packages/apps/CarrierConfig" revision="95074ecc6a05a86848bc8a9d3b8b03b2186ada43" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-cellbroadcastreceiver" path="packages/apps/CellBroadcastReceiver" revision="3646b8b0d83eeb2774baec93c6ee74518f30dc77" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-certinstaller" path="packages/apps/CertInstaller" revision="062594ed9f25d0208a7add7b9fc537adbd051c89" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-contacts" path="packages/apps/Contacts" revision="8a5c8a01e0a50eb8f78a82ddec5100df7ed81c23" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-deskclock" path="packages/apps/DeskClock" revision="f4a34dbb153f3790317e7c5ca61b95d2585e52ba" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-devcamera" path="packages/apps/DevCamera" revision="ac0c3f959d31b22df03ad8fc9c5c35425c3f4dd3" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-dialer" path="packages/apps/Dialer" revision="05552cb09dc243995e304dcb86e9b486312953c2" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-documentsui" path="packages/apps/DocumentsUI" revision="8e2637f303eca3f1a2da0bf59b208d67a760b986" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-email" path="packages/apps/Email" revision="2f553852c217821d620d19c24511f55f84ce6230" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-emergencyinfo" path="packages/apps/EmergencyInfo" revision="1307cd14006c44cbc7d625b10fc1b91f7ac100af" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-gallery" path="packages/apps/Gallery" revision="93d4b5a37c96052cfc22ecefd2bf1e0ae48d49cc" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-gallery2" path="packages/apps/Gallery2" revision="aa3033352235c276d3df5e9eacad2a5a0c626517" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-htmlviewer" path="packages/apps/HTMLViewer" revision="ba5580e4e1ac8f9f3eb1eb6338e43716ad0a70b1" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-keychain" path="packages/apps/KeyChain" revision="885bc291249cb764c499ad0b5ebd32ce015d74ac" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-launcher3" path="packages/apps/Launcher3" revision="a7d3ec81c553a1d2e58be32b5a6f4807012cd677" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-legacycamera" path="packages/apps/LegacyCamera" revision="f01f73e6d950f8c2cce04cc6f0404a4cb17fa7bd" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-managedprovisioning" path="packages/apps/ManagedProvisioning" revision="3e77d4a07cff7ae760868b63f05d69cde33f6ca3" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-messaging" path="packages/apps/Messaging" revision="30ca4742926f8f7e2468ee451b4c71df918b6877" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-music" path="packages/apps/Music" revision="a1f1c511703838aef7656a75ef41022d2d3c5105" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-musicfx" path="packages/apps/MusicFX" revision="161a6f2ae4bdfde1a469bdf5e66db4bbff770671" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-nfc" path="packages/apps/Nfc" revision="85468bf3f51c580955721ce16bef312b5e6a4a69" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-onetimeinitializer" path="packages/apps/OneTimeInitializer" revision="737b0d2daabf33a458ed754e045b2f0e2b65da70" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-packageinstaller" path="packages/apps/PermissionController" revision="61b9cfdf2758ec289d6907d098df4a3277f8114f" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-phonecommon" path="packages/apps/PhoneCommon" revision="bb3f2ba6bc3ce1e273394ec5c715fb693b53d344" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-protips" path="packages/apps/Protips" revision="277f2db1a9099d5aaf96d4f3ca8daaeeeeef4e6f" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-provision" path="packages/apps/Provision" revision="d3aaf77c58a5886c113f88a99c6aa8f2b7873107" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-quicksearchbox" path="packages/apps/QuickSearchBox" revision="afefb469ba1de266f594827dbd92b8d5c642395e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-safetyregulatoryinfo" path="packages/apps/SafetyRegulatoryInfo" revision="8e051158d0eede62da5e56b3dad30fecb2767821" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-samplelocationattribution" path="packages/apps/SampleLocationAttribution" revision="01809642e1c7214d936c0d35301b355fe6dbfdf0" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-secureelement" path="packages/apps/SecureElement" revision="4bd2e8512223f81bdea1afef1de4ccced39a62fc" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-settings" path="packages/apps/Settings" revision="08d96e2c487d7e8e0bad187344d4363880a821a4" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-settingsintelligence" path="packages/apps/SettingsIntelligence" revision="c725f6eb67081599d68bc915b72604b350b86ad1" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-soundrecorder" path="packages/apps/SoundRecorder" revision="52d1ce17a0c18fe990a80da98c61399363d1ed7c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-spareparts" path="packages/apps/SpareParts" revision="f3d46ceeecd71c5555939f32643c18c78ae7909f" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-stk" path="packages/apps/Stk" revision="f76f0524319c40c3639c7a2fdd2c995144876322" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-storagemanager" path="packages/apps/StorageManager" revision="daddd18fda1200dbc769729fde834e90a8bef91b" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-tag" path="packages/apps/Tag" revision="40fddd7aa57ca28842d8781c19ba9c08f1de662a" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-terminal" path="packages/apps/Terminal" revision="4d4e9490fdd512668ac0d47764f3eeb19504a6d2" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-test-connectivity" path="packages/apps/Test/connectivity" revision="0be3e6ffd8451b1bf03ba7a6bdb78e8247c960ba" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-themepicker" path="packages/apps/ThemePicker" revision="322c5298f4d682dfd7c56a44ba79a7b74638322c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-timezonedata" path="packages/apps/TimeZoneData" revision="52bff87fa8f9413d81d8af0d258fa4ea209f84ec" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-timezoneupdater" path="packages/apps/TimeZoneUpdater" revision="106fb74251c2f00cfe07ff3357153cb1d9954ec2" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-traceur" path="packages/apps/Traceur" revision="e8009abf2e6c4a8ea4e216649e51ccfd2d9cd306" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-tv" path="packages/apps/TV" revision="28bd9f8c4e624455fbdce86f75820c0d4c9d5fe5" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-tvsettings" path="packages/apps/TvSettings" revision="1c1fa1d354ddb9c3e9ec8c795051eef234ed1285" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-unifiedemail" path="packages/apps/UnifiedEmail" revision="b2161491d87d7a32f18278a4c2b92549d70f8965" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-wallpaperpicker" path="packages/apps/WallpaperPicker" revision="f1e69b45bde30a055d37260012df8e951bebf491" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-wallpaperpicker2" path="packages/apps/WallpaperPicker2" revision="6bcea19e3667832f65e1b8afe4ede8152ea124fd" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-inputmethods-latinime" path="packages/inputmethods/LatinIME" revision="922b0778c9c6363ac9363560ff00bdb0975d18e5" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-modules-captiveportallogin" path="packages/modules/CaptivePortalLogin" revision="fe62b3b494c5203d5447efcf9a3c4ac8b8ee0afd" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-modules-extservices" path="packages/modules/ExtServices" revision="bf7f3d0025fcdcfa9ff557caf21ab8b20dc1fe04" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-modules-modulemetadata" path="packages/modules/ModuleMetadata" revision="bf198f3182e53f3d1dc9d061f558656e59f5d4c8" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-modules-networkpermissionconfig" path="packages/modules/NetworkPermissionConfig" revision="e853abe00d4b6906eee05082659fc958cbed3147" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-modules-networkstack" path="packages/modules/NetworkStack" revision="44647f52ff0cfb7bf220fd4d774430a00e6499aa" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-providers-applicationsprovider" path="packages/providers/ApplicationsProvider" revision="33d26f5eedb3d3011762ce5b2de66e931bf64b35" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-providers-blockednumberprovider" path="packages/providers/BlockedNumberProvider" revision="b573d1c96b0d84210a183dd3c0a1400025ae3b71" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-providers-bookmarkprovider" path="packages/providers/BookmarkProvider" revision="66d866abdf7184af7a98edce18012fc33c41b623" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-providers-calendarprovider" path="packages/providers/CalendarProvider" revision="960c914a6b2fd4138c3e54e8d65a645e4470a276" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-providers-calllogprovider" path="packages/providers/CallLogProvider" revision="5941bd440b92232434f03da497918cea7af43e9e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-providers-contactsprovider" path="packages/providers/ContactsProvider" revision="c6f82a6181b62c07236c54a7dab2dedfbebaf34d" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-providers-downloadprovider" path="packages/providers/DownloadProvider" revision="7536cfa1047a06e451743f7d58ea191ed4408df8" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-providers-mediaprovider" path="packages/providers/MediaProvider" revision="8b044f18a32d45af7395f796fb46f56af0b717a2" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-providers-partnerbookmarksprovider" path="packages/providers/PartnerBookmarksProvider" revision="9c3b541b4357011de2047a2e24f92a63c6d8d8a0" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-providers-telephonyprovider" path="packages/providers/TelephonyProvider" revision="c7f822647c68dc50816aed4c91f06939f8a1181e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-providers-tvprovider" path="packages/providers/TvProvider" revision="ae862e59ff8e81a079fa6b4d48cdf618b8fb14d1" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-providers-userdictionaryprovider" path="packages/providers/UserDictionaryProvider" revision="f22d4e72ec78b215e7bcd47c0b2e2861fac9fc9a" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-screensavers-basic" path="packages/screensavers/Basic" revision="a5080b83defd7ddf89d5d89d9ab59606dc719823" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-screensavers-phototable" path="packages/screensavers/PhotoTable" revision="ede6dd0afae1b5c7acaa2a1328e9624e157ffb3f" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-services-alternativenetworkaccess" path="packages/services/AlternativeNetworkAccess" revision="ddfb1029c3ab1598845f5d6193af211b1edb287d" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-services-builtinprintservice" path="packages/services/BuiltInPrintService" revision="09de2bdbfd73d64dd247b1b4e4ec80c560bdd508" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-services-car" path="packages/services/Car" revision="5da2e50d5ea9e15f5905305b05ed8016bfc62c49" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-services-mms" path="packages/services/Mms" revision="52144996744cb52bfa0985423c61df0fd3a2cb13" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-services-telecomm" path="packages/services/Telecomm" revision="772ed56e10f0ad7740b72a3ad577c96de5994bd1" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-services-telephony" path="packages/services/Telephony" revision="a295a49dee93b77d369d16b6f2d58db2006afd42" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-packages-wallpapers-livepicker" path="packages/wallpapers/LivePicker" revision="d3f1147aee6fd8043abe89694096951a282e962a" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-pdk" path="pdk" revision="8112961f0cfa2bef459f5dd3dd77462cd6325d8b" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-platform_testing" path="platform_testing" revision="22b70ad143a8b978cf478040cadf934ca7ed7ad3" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-abi-dumps-ndk" path="prebuilts/abi-dumps/ndk" revision="a25b65595fb790dc80820d4392393fa539b88cd6" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-abi-dumps-vndk" path="prebuilts/abi-dumps/vndk" revision="7411278a49a8d759dd59cba464f5ebd82296ba2f" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-android-emulator" path="prebuilts/android-emulator" revision="e316f9edbcddcf7009d3bf6919830ec2b63854f3" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-asuite" path="prebuilts/asuite" revision="4c2eaabe4b1457931ef2d0da508fa10c112c3be2" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-build-tools" path="prebuilts/build-tools" revision="a58b1b57d600350c817effa2516ed36adb1bed49" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-bundletool" path="prebuilts/bundletool" revision="94fd4942e5d196d5d2dc47499e5f876c8184c8e0" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-checkcolor" path="prebuilts/checkcolor" revision="c642ef358b291084a614a983081720d0ef59d6e1" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-checkstyle" path="prebuilts/checkstyle" revision="a4e41fdccb2caa571f9aeb791bb0fefc06b9bb0d" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-clang-host-darwin-x86" path="prebuilts/clang/host/darwin-x86" revision="70a45960daf394435ec2fabf34bc701276e522c8" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-clang-host-linux-x86" path="prebuilts/clang/host/linux-x86" revision="7b1289663cd5300689f5825ef0cf9eb05081c83e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-clang-tools" path="prebuilts/clang-tools" revision="24d8778d695bdd756a307b903c4d1993ac132d2b" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-devtools" path="prebuilts/devtools" revision="5cb0e278ddc2161db13318950eed2ba2c29956a9" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-fuchsia_sdk" path="prebuilts/fuchsia_sdk" revision="8d3423cbce4c8a9fa631af578fda1ef0c6441abf" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-gcc-darwin-x86-aarch64-aarch64-linux-android-4.9" path="prebuilts/gcc/darwin-x86/aarch64/aarch64-linux-android-4.9" revision="be292e7b7445e3b0f62f89a6b99f04967f5d720e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-gcc-darwin-x86-arm-arm-linux-androideabi-4.9" path="prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.9" revision="58641e4434ae66df0d8198a3806aed280b5f0823" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-gcc-darwin-x86-host-i686-apple-darwin-4.2.1" path="prebuilts/gcc/darwin-x86/host/i686-apple-darwin-4.2.1" revision="b38ceb474969ba17032b3c0bf36a841140501889" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-gcc-darwin-x86-mips-mips64el-linux-android-4.9" path="prebuilts/gcc/darwin-x86/mips/mips64el-linux-android-4.9" revision="b3a68e192fbbafd3aac96de2148ca00445d7872e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-gcc-darwin-x86-x86-x86_64-linux-android-4.9" path="prebuilts/gcc/darwin-x86/x86/x86_64-linux-android-4.9" revision="f0534379f240db72803da273594dac64656b89a2" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-gcc-linux-x86-aarch64-aarch64-linux-android-4.9" path="prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9" revision="3214a204b8149a18fa1ebca2254e407b299560f1" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-gcc-linux-x86-arm-arm-linux-androideabi-4.9" path="prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9" revision="4ce3f20ffa9c2fff30d3465f2801d10420663121" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-gcc-linux-x86-host-x86_64-linux-glibc2.17-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.17-4.8" revision="53ba148ea43a70cceff101830eb44b932e6553d0" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-gcc-linux-x86-host-x86_64-w64-mingw32-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8" revision="6af64f0b67db9ba905654b8152823de21ca99154" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-gcc-linux-x86-mips-mips64el-linux-android-4.9" path="prebuilts/gcc/linux-x86/mips/mips64el-linux-android-4.9" revision="00e15925600ee0dd5f39e4a34e7870de47c13736" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-gcc-linux-x86-x86-x86_64-linux-android-4.9" path="prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9" revision="8469ad0c03c97c5cc8f5501f9f331eb746bc4345" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-gdb-darwin-x86" path="prebuilts/gdb/darwin-x86" revision="7fa7affd4a3356624187b436c8a3a075421107ab" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-gdb-linux-x86" path="prebuilts/gdb/linux-x86" revision="e2ceb27f958afcc0a1c7bd16c92d168f8b7ca939" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-go-darwin-x86" path="prebuilts/go/darwin-x86" revision="812f970cf6645df291664e9f774f88750f731fb8" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-go-linux-x86" path="prebuilts/go/linux-x86" revision="6b05df8c936396ff9466136ccfaf8d61f716cddb" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-gradle-plugin" path="prebuilts/gradle-plugin" revision="f529b20a5af18ac9e05aa41326a82dc6cc875a5e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-jdk-jdk8" path="prebuilts/jdk/jdk8" revision="a4bcf4f04bf988955b2e492b1d85ef2378954323" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-jdk-jdk9" path="prebuilts/jdk/jdk9" revision="dfe701f045b82428c37fcd9e45d429e8d06fbd8f" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-manifest-merger" path="prebuilts/manifest-merger" revision="8cf39623e459933125483d0299a41aef7bc0d364" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-maven_repo-android" path="prebuilts/maven_repo/android" revision="511a320455c2357daea28e72d0e81f4535245b21" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-maven_repo-bumptech" path="prebuilts/maven_repo/bumptech" revision="3d54faa0e71a2133e7865833d30a3a035aa7904e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-misc" path="prebuilts/misc" revision="e4d0f22c676e86ff68da9c4f294812da722af2f7" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-ndk" path="prebuilts/ndk" revision="a8e57cd2cd5c69967d71ed3457a82568861b3c33" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-python-darwin-x86-2.7.5" path="prebuilts/python/darwin-x86/2.7.5" revision="0163e36dc4b60aba48f99234f9023519abbe6517" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-python-linux-x86-2.7.5" path="prebuilts/python/linux-x86/2.7.5" revision="92798e5ef70d582950e3d9fa67873de9795ab502" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-qemu-kernel" path="prebuilts/qemu-kernel" revision="94dd30986196161b0ecdf4a465dc94e42e5d733c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-r8" path="prebuilts/r8" revision="0cce9ba5c2de58ddea785c3b3bb22bd539d005a6" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-sdk" path="prebuilts/sdk" revision="f695b827bbb5c949e0a82b2c2d5fa8f22ac068d9" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-tools" path="prebuilts/tools" revision="8ea67fb27733ff52fd1e6ebce6f2cc6640623298" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-vndk-v27" path="prebuilts/vndk/v27" revision="41916ec6cd947a705902cb20534e83960cb7b013" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-vndk-v28" path="prebuilts/vndk/v28" revision="0c2cb64ca1682a67034c3163d92ae1b6e1207ec3" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-sdk" path="sdk" revision="d40ca99b08984704448e04c6672ab9169e7ce924" upstream="BFX-UA300_5.4.0">
    <linkfile dest="frameworks/support/README.md" src="current/androidx-README.md"/>
  </project>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-apex" path="system/apex" revision="08cc8bec6591a938b6095dc7bc541219dd2078e3" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-ashmemd" path="system/ashmemd" revision="540d579f3079b1796414f12118632c6adc9387e3" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-bpf" path="system/bpf" revision="ce03e13a8e28cd2e53784f0447759b7b7355ab9c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-bpfprogs" path="system/bpfprogs" revision="89c774dd2bf349c81ede1db7a599eb5cb0a43515" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-bt" path="system/bt" revision="76c48140a4ad7db697827457526b047d4f7479f5" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-ca-certificates" path="system/ca-certificates" revision="c6416488c70654f91a46ff1bce706c97389d4a8e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-chre" path="system/chre" revision="06146d54884c7a60d2419326939d0558b6d5a692" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-connectivity-wificond" path="system/connectivity/wificond" revision="2e4f97226fd858f1a01a5d32845ec8981644beed" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-connectivity-wifilogd" path="system/connectivity/wifilogd" revision="4dcae5651bcb21789929ba7f080e92e207fe5628" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-core" path="system/core" revision="3634ae29c8edf1e61a12425c278a1cd0ac08c851" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-extras" path="system/extras" revision="14ac430440fb1ee105680d84e1500be8ef9400e7" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-gatekeeper" path="system/gatekeeper" revision="c9e9e63bf9147a900ae7d0a5f6b0723b8eb717cb" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-gsid" path="system/gsid" revision="16530ede0d2b85e0465f0216b87d95df670a2708" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-hardware-interfaces" path="system/hardware/interfaces" revision="a3afeba0e083c2759af3ab11e72b01b5e7d5d1bb" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-hwservicemanager" path="system/hwservicemanager" revision="c7c5db80460b4a6d19371165941cf1caa345bc7c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-iorap" path="system/iorap" revision="441263b835fd877878b741af7a0d3965c5282130" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-keymaster" path="system/keymaster" revision="65efdbdee288c39389993a6da6d263539fae8123" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-libfmq" path="system/libfmq" revision="ebc3419c62eceeb00d9960c4810b323f2679a3bb" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-libhidl" path="system/libhidl" revision="65c02b0eb0874b54f19ae408b7a4bead12ab593b" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-libhwbinder" path="system/libhwbinder" revision="df2463d2f78e1aa6889ca2168d695eba551f6cf8" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-libsysprop" path="system/libsysprop" revision="efe33c9f53f833cb582a1f623d6418939519a1b6" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-libufdt" path="system/libufdt" revision="715ca232a5b4b870968eceedc332eb84cf312963" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-libvintf" path="system/libvintf" revision="57d58ff3d5db0d78bf80e8a85706f77120506a85" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-linkerconfig" path="system/linkerconfig" revision="729bc5978e09f803c12e26e377f18bd022166cc7" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-media" path="system/media" revision="977975deb02d65e07870a62089f4891a6501d391" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-netd" path="system/netd" revision="db8d73e0b3c36d3b15cc80bec2cf031dbef7547c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-nfc" path="system/nfc" revision="ed463a1b44f56e18ded6fc74a1a43ea494c7f062" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-nvram" path="system/nvram" revision="0f6a0aa324ba9f6197f4f9b4a26c3db4fcd2935f" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-security" path="system/security" revision="6574ead72d6691b906af7a1cdd7479cf219fe49c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-sepolicy" path="system/sepolicy" revision="d3c4284673044406f654e2cd7afeaa0ff5ffd02c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-server_configurable_flags" path="system/server_configurable_flags" revision="1d7caad900cb9cc24202d8aea5387a363135b2e1" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-testing-gtest_extras" path="system/testing/gtest_extras" revision="7eae4114c5b03eb4b991167a2eacabf021f50441" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-timezone" path="system/timezone" revision="2caa43b60ced0a2f026a6d27701703579b51e2ad" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-tools-aidl" path="system/tools/aidl" revision="23dd4ea76f01eec30ac99b603982682ea5176688" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-tools-hidl" path="system/tools/hidl" revision="df179c7d547c13860f6b0cbd060fa50fc53063cb" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-tools-sysprop" path="system/tools/sysprop" revision="99a0a81d73929cff8cbb3115c65eb779017e09ae" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-tools-xsdc" path="system/tools/xsdc" revision="b564858b10510e64b44e3afd4c8dffe66dc249fb" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-ucontainer" path="system/ucontainer" revision="b63e91330946f9c73e1c72032cfc31d1a8c9bc8f" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-update_engine" path="system/update_engine" revision="30176ddeae8a6262c321cf8080cf8194d7bde0c7" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-system-vold" path="system/vold" revision="a352de1f95762adfe4efe5a9cac96bf938bd7c88" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-test-framework" path="test/framework" revision="d197e5e045630cfbcfc9313c95fcbbde61fb2bfc" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-test-mlts-benchmark" path="test/mlts/benchmark" revision="f837b5a0a561fa0a96e483d7c8fae0b0ae65b5ac" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-test-mlts-models" path="test/mlts/models" revision="a92852efb52754926c69e9cdbe651de935f55349" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-test-sts" path="test/sts" revision="4ea5f5482bafb264872f66e8a188afb1b9e3289f" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-test-suite_harness" path="test/suite_harness" revision="d1dc7ca85df83c11cbce1420039e8b119f65de95" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-test-vti-alert" path="test/vti/alert" revision="2270d160e38f0623d708cce36754fe14168dce64" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-test-vti-dashboard" path="test/vti/dashboard" revision="a9bd47e4caa21d535fb89c0e6efe23fa08d25847" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-test-vti-fuzz_test_serving" path="test/vti/fuzz_test_serving" revision="6319e3d94c65669050c49c6ca570096d41823b82" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-test-vti-test_serving" path="test/vti/test_serving" revision="417ad51c260dc9d0bfc6b64e567fa67b112c1560" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-test-vts" path="test/vts" revision="fda9b4904a8f831ba657898fe9fe5cdec9125493" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-test-vts-testcase-fuzz" path="test/vts-testcase/fuzz" revision="3845288c52bf080b0c5a01005de15e11a0033254" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-test-vts-testcase-hal" path="test/vts-testcase/hal" revision="c1d9fbb134c12891dca374888d61ec0955b242f8" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-test-vts-testcase-hal-trace" path="test/vts-testcase/hal-trace" revision="2695892568f8fade958ec0ec172df8f295ae4112" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-test-vts-testcase-kernel" path="test/vts-testcase/kernel" revision="2fb6198c35a0a33467a439d177d5d2b4d4652044" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-test-vts-testcase-nbu" path="test/vts-testcase/nbu" revision="0712e2a442364af77a0b1dda0adf922d1d1447bc" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-test-vts-testcase-performance" path="test/vts-testcase/performance" revision="f0e5dcee43de6f9c44a3872721087d96eaa48273" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-test-vts-testcase-security" path="test/vts-testcase/security" revision="eea627799809b8983ccfb97423e1447bdca8146e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-test-vts-testcase-vndk" path="test/vts-testcase/vndk" revision="5c3af3d1069012326ad2cac89be6419b371a5ce2" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-tools-acloud" path="tools/acloud" revision="a4701b3b46bef2c27ad138ff93c3ed993844e470" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-tools-apifinder" path="tools/apifinder" revision="7fa228a612a41c551ddd786c79bd84294699178c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-tools-apksig" path="tools/apksig" revision="83eec36412695949f24be9d917ed7ba26fff3f5c" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-tools-apkzlib" path="tools/apkzlib" revision="ae1086c47adc35af5c36b5f2e93afc0c2ce27a8a" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-tools-asuite" path="tools/asuite" revision="e301e8ebc29a550920f2aea7d9591ed90b13080a" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-tools-currysrc" path="tools/currysrc" revision="2e5983face85bcb39a206900879e2db530765169" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-tools-dexter" path="tools/dexter" revision="71670e520938b04268283dc53cda1e167610952e" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-tools-loganalysis" path="tools/loganalysis" revision="20dc959b5b29014b16cc6ad4318918d70c65c841" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-tools-metalava" path="tools/metalava" revision="edcafddcb54e149af8d4135a346501dde802fb30" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-tools-ndkports" path="tools/ndkports" revision="74fefbc2160250129cbd157272fcfb3c9ac20f18" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-tools-repohooks" path="tools/repohooks" revision="a4350d0cc24b53d77b2cea9b8a9a2e2ff9e828f7" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-tools-security" path="tools/security" revision="3c5ee5d6f2f50895611eacd71a62b11efcfb0648" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-tools-test-connectivity" path="tools/test/connectivity" revision="428b0925776d925a1cb1d1c89e61c023469a87eb" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-tools-test-graphicsbenchmark" path="tools/test/graphicsbenchmark" revision="ed1a7ab48149fd3c96d2dc841bea4feb3c361857" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-tools-tradefederation" path="tools/tradefederation/core" revision="6be2b995c4a23416e0bc6ddc53fce210bc2c8239" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-tools-tradefederation-contrib" path="tools/tradefederation/contrib" revision="150a6187b5c01ec10e6389888d64641272900f01" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-tools-trebuchet" path="tools/trebuchet" revision="5c74aa19df59af3292dadc6db03ffbf5235b3a9d" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-tools-vendor-google_prebuilts-arc" path="tools/vendor/google_prebuilts/arc" revision="f7e95a08c24a975117746a0f36f730a48db79287" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-vendor-google_gtvs" path="vendor/google_gtvs" revision="64e9ad9d7aeb4682c52dd1d6f4cf1ac1d3b69c20" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-vendor-google_vts" path="vendor/google_vts" revision="f07a8f0eb404e41b14c74df5bd7c498a68448221" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="platform-vendor-widevine" path="vendor/widevine" revision="fe7add10ba37bed587a6f3a7b3e45411c1eb7085" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BTF_API_LEVEL_7_android-10" groups="skb_bcf" name="scm" path="vendor/skb/framework/scm" remote="skb_bcf" revision="6354afd3962791c17a770ade20276c8b165c18c3" upstream="BTF_API_LEVEL_7_android-10">
    <linkfile dest="sync_btf_src.sh" src="sync_btf_src.sh"/>
  </project>
  <project dest-branch="BTF_API_LEVEL_7" groups="skb_prebuilts" name="skb_bt-services" path="vendor/skb/prebuilts/skb_bt-services" remote="skb_prebuilts" revision="ba1c593710a89be7f429af36f9ef666bf645020c" sync-c="true" sync-tags="false" upstream="BTF_API_LEVEL_7"/>
  <project dest-branch="BTF_API_LEVEL_7" groups="skb_prebuilts" name="skb_device-control-app" path="vendor/skb/prebuilts/skb_device-control-app" remote="skb_prebuilts" revision="54b0b79989c71946230fe761045cf826a9397e93" sync-c="true" sync-tags="false" upstream="BTF_API_LEVEL_7"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="skb_device-profile" path="vendor/skb/device-profile" remote="skb_prebuilts" revision="4e584d715166a54fe056c20f47d8917663e2e7f8" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BTF_API_LEVEL_7" groups="skb_prebuilts" name="skb_edmp" path="vendor/skb/prebuilts/skb_edmp" remote="skb_prebuilts" revision="f834f59a9617de1d6a1596acfe83d351fe7e39c2" sync-c="true" sync-tags="false" upstream="BTF_API_LEVEL_7"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="skb_fonts" path="vendor/skb/prebuilts/skb_fonts" remote="skb_prebuilts" revision="2656f17fc0c0b1783e7aa7606dddfdd898b77986" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="release/5.4.0" groups="skb_prebuilts,testauto" name="skb_hlsplayer" path="vendor/skb/prebuilts/skb_hlsplayer" remote="skb_prebuilts" revision="4c7b9180248176f03da0a5b93946060cd2a06455" sync-c="true" sync-tags="false" upstream="release/5.4.0"/>
  <project dest-branch="BTF_API_LEVEL_7" groups="skb_prebuilts" name="skb_ime" path="vendor/skb/prebuilts/skb_ime" remote="skb_prebuilts" revision="398fa28553cd5e29f5bb864a3b9daee69df0f12d" sync-c="true" sync-tags="false" upstream="BTF_API_LEVEL_7"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="skb_kids-guide" path="vendor/skb/prebuilts/skb_kids-guide" remote="skb_prebuilts" revision="c06930386e3b3e2545f36e62b4f446c22c068842" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BTF_API_LEVEL_7_CTS" groups="skb_prebuilts" name="skb_logsystem" path="vendor/skb/prebuilts/skb_logsystem" remote="skb_prebuilts" revision="3af69359bd4edf4e57fde4e98143462a43467e62" sync-c="true" sync-tags="false" upstream="BTF_API_LEVEL_7_CTS"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="skb_memory-monitor" path="vendor/skb/prebuilts/skb_memory-monitor" remote="skb_prebuilts" revision="09d77b8ee9d4386dfaf60119ebc9afa1515ced12" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="skb_menu-image" path="vendor/skb/prebuilts/skb_menu-image" remote="skb_prebuilts" revision="f96f332f80f416295ba0d279748826f6deb65c04" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BTF_API_LEVEL_7" groups="skb_prebuilts" name="skb_navigator" path="vendor/skb/prebuilts/skb_navigator" remote="skb_prebuilts" revision="e7bf6b95661910ac17c944e60d6504f9c494e1b3" sync-c="true" sync-tags="false" upstream="BTF_API_LEVEL_7"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="skb_rcu-firmware" path="vendor/skb/prebuilts/skb_rcu-firmware" remote="skb_prebuilts" revision="e55993b6fa710023a4602c0cb3e6815b2e439667" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BTF_API_LEVEL_7" groups="skb_prebuilts" name="skb_smartrcuagent" path="vendor/skb/prebuilts/skb_smartrcuagent" remote="skb_prebuilts" revision="6312e048f731bf8cf7bd8d49e248a188235de0ec" sync-c="true" sync-tags="false" upstream="BTF_API_LEVEL_7"/>
  <project dest-branch="BTF_API_LEVEL_7" groups="skb_prebuilts" name="skb_xwalk" path="vendor/skb/prebuilts/skb_xwalk" remote="skb_prebuilts" revision="a232320be31194169dfdc46c3a8693bffcef9c3f" sync-c="true" sync-tags="false" upstream="BTF_API_LEVEL_7"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="skp_animatedad" path="vendor/skb/prebuilts/skp_animatedad" remote="skb_prebuilts" revision="a497c7c13adb3e98540ac4f4e90f4d088ec986a9" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="skp_cs-lib" path="vendor/skb/prebuilts/skp_cs-lib" remote="skb_prebuilts" revision="5a751b6986800b8bcf03c650f517104b1410f539" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="skp_rtsp" path="vendor/skb/prebuilts/skp_rtsp" remote="skb_prebuilts" revision="28a08635e31993f7b3f0a3a057a1d6ae9e04e928" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="skt_mpp" path="vendor/skb/prebuilts/skt_mpp" remote="skb_prebuilts" revision="5cb327016d3259014b213c0ffa83c89187fab57e" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="skt_nugu" path="vendor/skb/prebuilts/skt_nugu" remote="skb_prebuilts" revision="c51f05bc042cbc146e55bdf9bbb8bbea636b4b66" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="tisquare_family-earphone" path="vendor/skb/prebuilts/tisquare_family-earphone" remote="skb_prebuilts" revision="5324b42b5e84b331204813cc9c6cd33fb32619d7" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="tisquare_mdns-manager" path="vendor/skb/prebuilts/tisquare_mdns-manager" remote="skb_prebuilts" revision="d4556dc2434221873e9761015cc971b4e47fa8ad" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" name="toolchain-pgo-profiles" path="toolchain/pgo-profiles" revision="01759dfb7a82934d9bc279c960445d10f5c0acbb" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="uei_quickset" path="vendor/skb/prebuilts/uei_quickset" remote="skb_prebuilts" revision="077d476da1e9e931317c89f1a63385df3e868a38" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="foxconn" name="vendor-foxconn" path="vendor/foxconn" revision="e990cbf89ca02619c4b8805b20a4b56cd412587a" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="bg5ct-android-10" groups="mw" name="vendor-mw-sptek" path="vendor/sptek" remote="sptek-syna" revision="74cba2856b3332592ee90b83f38f4fbff45844fb" upstream="bg5ct-android-10"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="foxconn,sptek" name="vendor-scripts" path="vendor/scripts" revision="982444a6bc120a438d99549fc18e99981d2c7994" upstream="BFX-UA300_5.4.0">
    <linkfile dest="build_all.sh" src="build_all.sh"/>
    <linkfile dest="updatezip.sh" src="updatezip.sh"/>
    <linkfile dest="env.sh" src="env.sh"/>
    <linkfile dest="release.sh" src="release.sh"/>
  </project>
  <project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="zinnaworks_push-agent" path="vendor/skb/prebuilts/zinnaworks_push-agent" remote="skb_prebuilts" revision="f7a328fcba9123a1c38d4d9f037e7db867221916" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
  <project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="zooinnet_rtsp" path="vendor/skb/prebuilts/zooinnet_rtsp" remote="skb_prebuilts" revision="0fdfacba5efd86343d6616176590860cdb918560" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
  
  <repo-hooks enabled-list="pre-upload" in-project="platform-tools-repohooks"/>
</manifest>

(SW) Jerry Lin

2023-11-27 19:37

developer   ~0014637

Hi Sangmin Choi.
Please download test FW from ALT Server.
/release_by_fxn/swan_test_image/20231127_mantis1496

Jerry

(ALTech) Sangmin Choi

2023-11-29 16:13

developer   ~0014651

Hello, Jerry,

Could you please build a test firmware after applied attached patches? SD only.

This firmware should be built under 540 branches.

vendor/synaptics/vsxxx
zapping_test.diff

Thank you.
Sangmin Choi.
zapping_test.diff (898 bytes)   
diff --git a/audio/AudioStreamNonTunnelOut.cpp b/audio/AudioStreamNonTunnelOut.cpp
index 7a71eb5..00e6d56 100755
--- a/audio/AudioStreamNonTunnelOut.cpp
+++ b/audio/AudioStreamNonTunnelOut.cpp
@@ -335,7 +335,7 @@ ssize_t AudioStreamNonTunnelOut::write(const void *buffer, size_t bytes)
         }
 
         if (audio_is_linear_pcm(mConfig.format)) {
-
+#if 0
             //Vas add start for muting APP audio in AMP_SND module; River 2021/01/12
             static bool bMuteStatus=false;
             static UINT orgVol;
@@ -356,7 +356,7 @@ ssize_t AudioStreamNonTunnelOut::write(const void *buffer, size_t bytes)
                 }
             }
             //Vas add end for muting APP audio in AMP_SND module;River 2021/01/12
-
+#endif
             rc = AMP_SND_PushPCM_NonBlock(mStreamHandle[AUDIO_STREAM_IDX_PCM], buf, bytes);
             CHECK_RESULT(rc);
             if (rc != S_OK) {
zapping_test.diff (898 bytes)   

(SW) Jason Ling

2023-12-11 11:29

developer   ~0014698

Hi Sangmin,

>>vendor/synaptics/vsxxx
>>zapping_test.diff

Done
/release_by_fxn/tmp/zapping_test

Thanks,
Jason

(ALTech) Sangmin Choi

2023-12-18 15:48

developer   ~0014762

Hello, Jerry,

Could you please build a test firmware after applied attached patches? SD only.

This firmware should be built under 540 branches.

vendor/synaptics/vsxxx
debug_message_AudioStreamNonTunnelOut.diff

Thank you.
Sangmin Choi.
debug_message_AudioStreamNonTunnelOut.diff (655 bytes)   
diff --git a/audio/AudioStreamNonTunnelOut.cpp b/audio/AudioStreamNonTunnelOut.cpp
index 7a71eb5..15b9bb8 100755
--- a/audio/AudioStreamNonTunnelOut.cpp
+++ b/audio/AudioStreamNonTunnelOut.cpp
@@ -314,7 +314,7 @@ ssize_t AudioStreamNonTunnelOut::write(const void *buffer, size_t bytes)
 #else
                 uiSleepTimeMs = (uiSleepTimeMs >= 10)? uiSleepTimeMs: 10;
 #endif
-                MVLOGV("SLEEP for %d ms, %d, flag:0x%x",
+                MVLOGD("SLEEP for %d ms, %d, flag:0x%x",
                     uiSleepTimeMs, uiPipeFullnessMs, uiStatFlag);
                 usleep(uiSleepTimeMs*1000);
                 uiPushBlockedMs += uiSleepTimeMs;

(SW) Jason Ling

2023-12-19 09:52

developer   ~0014766

Hi Sangmin,

>>vendor/synaptics/vsxxx
>>debug_message_AudioStreamNonTunnelOut.diff

/release_by_fxn/tmp/debug_message_AudioStreamNonTunnelOut

Thanks,
Jason

(SW) Jerry Lin

2023-12-19 09:52

developer   ~0014767

Hi Sangmin Choi.
Please download test FW from ALT Server.
/release_by_fxn/swan_test_image/20231219_mantis1496

Jerry

Issue History

Date Modified Username Field Change
2022-06-22 08:46 (ALTech) Sangmin Choi New Issue
2022-06-22 08:46 (ALTech) Sangmin Choi Status new => assigned
2022-06-22 08:46 (ALTech) Sangmin Choi Assigned To => (SW) Jason Ling
2022-06-22 08:46 (ALTech) Sangmin Choi File Added: nugu-stb-bfx_ua300-user-3.13.5.apk
2022-06-22 10:14 (SW) Jason Ling Status assigned => resolved
2022-06-22 10:14 (SW) Jason Ling Resolution open => fixed
2022-06-22 10:14 (SW) Jason Ling Note Added: 0010225
2022-06-22 10:33 (ALTech) Sangmin Choi Status resolved => closed
2022-06-22 10:33 (ALTech) Sangmin Choi Note Added: 0010226
2022-06-30 10:13 (ALTech) Sangmin Choi Status closed => feedback
2022-06-30 10:13 (ALTech) Sangmin Choi Resolution fixed => reopened
2022-06-30 10:13 (ALTech) Sangmin Choi Note Added: 0010269
2022-06-30 10:14 (ALTech) Sangmin Choi Summary Build a test image include attached NUGU apk. => Please build a test image.
2022-06-30 10:14 (ALTech) Sangmin Choi Description Updated
2022-06-30 10:17 (ALTech) Sangmin Choi File Added: 0001-hls-1.5-2.patch
2022-06-30 10:17 (ALTech) Sangmin Choi Note Added: 0010270
2022-06-30 10:17 (ALTech) Sangmin Choi Status feedback => assigned
2022-06-30 13:50 (SW) Jason Ling Note Added: 0010271
2022-06-30 13:50 (SW) Jason Ling Assigned To (SW) Jason Ling => (ALTech) Sangmin Choi
2022-06-30 13:51 (SW) Jason Ling Status assigned => resolved
2022-06-30 13:51 (SW) Jason Ling Resolution reopened => fixed
2022-06-30 14:45 (ALTech) Sangmin Choi Note Added: 0010273
2022-06-30 15:01 (ALTech) Sangmin Choi Note Added: 0010274
2022-06-30 15:02 (SW) Jason Ling Note Added: 0010275
2022-06-30 15:39 (ALTech) Sangmin Choi File Added: 0001-frameworks-av-increase_audio_input_buffer.patch
2022-06-30 15:39 (ALTech) Sangmin Choi File Added: 0001-hls-1.5-2-2.patch
2022-06-30 15:39 (ALTech) Sangmin Choi Note Added: 0010276
2022-06-30 16:16 (ALTech) Sangmin Choi File Added: 1124994_0001-SKB-MMCEI-9909-AHAL-PTS-delivery-for-DD-pass-throu.patch
2022-06-30 16:16 (ALTech) Sangmin Choi File Added: 0001-frameworks-av-increase_audio_input_buffer-2.patch
2022-06-30 16:16 (ALTech) Sangmin Choi File Added: 0001-hls-1.5-2-3.patch
2022-06-30 16:16 (ALTech) Sangmin Choi Note Added: 0010277
2022-06-30 17:14 (ALTech) Sangmin Choi Note Edited: 0010277
2022-06-30 17:15 (ALTech) Sangmin Choi Note Edited: 0010277
2022-06-30 17:15 (ALTech) Sangmin Choi Note Edited: 0010277
2022-06-30 18:49 (SW) Jason Ling Note Added: 0010282
2022-07-12 10:27 (ALTech) Sangmin Choi Note Added: 0010348
2022-07-12 10:27 (ALTech) Sangmin Choi Assigned To (ALTech) Sangmin Choi => (SW) Jason Ling
2022-07-12 12:08 (ALTech) Sangmin Choi Note Edited: 0010348
2022-07-12 15:29 (SW) Jason Ling Note Added: 0010350
2022-07-29 17:01 (ALTech) Sangmin Choi Note Added: 0010488
2022-07-29 17:01 (ALTech) Sangmin Choi File Added: 0001-MMCEI-9962-AI2-47-AppleTV-FF-3X-and-1X-resume-issue-.patch
2022-07-29 17:02 (ALTech) Sangmin Choi Status resolved => feedback
2022-07-29 17:02 (ALTech) Sangmin Choi Resolution fixed => reopened
2022-07-29 21:24 (SW) Jason Ling Note Added: 0010490
2022-07-29 21:25 (SW) Jason Ling Assigned To (SW) Jason Ling => (ALTech) Sangmin Choi
2022-08-04 13:57 (ALTech) Sangmin Choi Note Added: 0010525
2022-08-04 13:58 (ALTech) Sangmin Choi Note Edited: 0010525
2022-08-04 14:02 (ALTech) Sangmin Choi Assigned To (ALTech) Sangmin Choi => (SW) Jason Ling
2022-08-04 16:28 (SW) Jason Ling Assigned To (SW) Jason Ling => (ALTech) Sangmin Choi
2022-08-04 16:28 (SW) Jason Ling Status feedback => resolved
2022-08-04 16:28 (SW) Jason Ling Resolution reopened => fixed
2022-08-04 16:28 (SW) Jason Ling Note Added: 0010528
2022-08-25 09:29 (ALTech) Sangmin Choi Note Added: 0010708
2022-08-25 09:29 (ALTech) Sangmin Choi File Added: patch_ai2_41.tgz
2022-08-25 09:29 (ALTech) Sangmin Choi File Added: 20220825_0001-hls-1.5-patch-1-1.patch
2022-08-25 09:29 (ALTech) Sangmin Choi File Added: 20220825_0001-frameworks-av-increase_audio_input_buffer.patch
2022-08-25 09:29 (ALTech) Sangmin Choi Assigned To (ALTech) Sangmin Choi => (SW) Jason Ling
2022-08-25 09:29 (ALTech) Sangmin Choi Status resolved => feedback
2022-08-25 09:29 (ALTech) Sangmin Choi Resolution fixed => reopened
2022-08-25 14:42 (SW) Jason Ling Assigned To (SW) Jason Ling => (ALTech) Sangmin Choi
2022-08-25 14:42 (SW) Jason Ling Note Added: 0010712
2022-08-25 14:58 (ALTech) Sangmin Choi Issue Monitored: (ALTech) Sangmin Choi
2022-08-25 15:27 (ALTech) Sangmin Choi Note Added: 0010714
2022-08-25 15:27 (ALTech) Sangmin Choi File Added: enable_ampdiag_log.patch
2022-08-25 15:57 (ALTech) Sangmin Choi Note Added: 0010716
2022-08-25 15:57 (ALTech) Sangmin Choi File Added: outputimage_4296.zip
2022-08-25 16:05 (SW) Jason Ling Issue Monitored: (SW) Dean Chiang
2022-08-25 17:21 (SW) Dean Chiang Note Added: 0010717
2022-08-25 17:21 (SW) Dean Chiang Note Edited: 0010717
2022-08-25 18:06 (SW) Dean Chiang Note Edited: 0010717
2022-09-06 09:17 (ALTech) Sangmin Choi Note Added: 0010798
2022-09-06 09:17 (ALTech) Sangmin Choi File Added: 0002-https-sc-debu-git.synaptics.com-gerrit-c-171604.patch
2022-09-06 09:17 (ALTech) Sangmin Choi File Added: 0001-https-sc-debu-git.synaptics.com-gerrit-c-162747.patch
2022-09-06 09:17 (ALTech) Sangmin Choi File Added: 0004-https-sc-debu-git.synaptics.com-gerrit-c-171604-2.patch
2022-09-06 09:17 (ALTech) Sangmin Choi File Added: 0003-empty_bd_pool-crash.patch
2022-09-06 11:32 (SW) Dean Chiang Note Added: 0010804
2022-09-13 17:04 (ALTech) Sangmin Choi Note Added: 0010846
2022-09-14 08:44 (ALTech) Sangmin Choi Note Added: 0010848
2022-09-14 08:44 (ALTech) Sangmin Choi File Added: MMCEI-9987_SKBSBLT-191_patch (1).zip
2022-09-14 08:45 (ALTech) Sangmin Choi Assigned To (ALTech) Sangmin Choi => (SW) Dean Chiang
2022-09-15 14:45 (SW) Dean Chiang Note Added: 0010873
2022-09-23 13:34 (ALTech) Sangmin Choi Note Added: 0010921
2022-09-23 13:34 (ALTech) Sangmin Choi Status feedback => assigned
2022-09-23 16:44 (SW) Dean Chiang Note Added: 0010928
2022-09-27 08:15 (ALTech) Sangmin Choi Note Added: 0010936
2022-09-27 14:52 (SW) Dean Chiang Note Added: 0010939
2022-10-06 15:56 (ALTech) Sangmin Choi Note Added: 0010979
2022-10-06 15:56 (ALTech) Sangmin Choi File Added: 7fe1241.diff
2022-10-06 19:40 (SW) Dean Chiang Note Added: 0010983
2022-10-13 10:21 (ALTech) Sangmin Choi Note Added: 0011036
2022-10-13 10:21 (ALTech) Sangmin Choi File Added: 0001-MMCEI-9987-congested-vbi-interrupt-filtering-2.patch
2022-10-14 14:29 (SW) Dean Chiang Note Added: 0011048
2022-11-10 09:02 (ALTech) Sangmin Choi Note Added: 0011194
2022-11-10 12:28 (SW) Jason Ling Note Added: 0011199
2022-11-16 15:31 (ALTech) Sangmin Choi Note Added: 0011233
2022-11-16 15:31 (ALTech) Sangmin Choi File Added: 1274333_0001-PATCH-MMCEI-9987-congested-vbi-interrupt-filtering-3.patch
2022-11-16 18:18 (SW) Dean Chiang Note Added: 0011235
2022-12-05 12:38 (ALTech) Sangmin Choi Note Added: 0011391
2022-12-05 12:38 (ALTech) Sangmin Choi File Added: 0001-remove_zram_swap_file.patch
2022-12-05 17:04 (SW) Dean Chiang Note Added: 0011396
2022-12-06 10:45 (ALTech) Sangmin Choi Note Added: 0011402
2022-12-06 12:26 (ALTech) Sangmin Choi Note Added: 0011404
2022-12-06 14:46 (SW) Dean Chiang Note Added: 0011405
2022-12-09 10:44 (ALTech) Sangmin Choi Note Added: 0011439
2022-12-09 10:44 (ALTech) Sangmin Choi File Added: AI2-100-vdec-1.patch
2022-12-09 10:44 (ALTech) Sangmin Choi File Added: AI2-100-amp_wrapper-2.patch
2022-12-09 15:29 (SW) Dean Chiang Note Added: 0011446
2022-12-14 12:59 (ALTech) Sangmin Choi Note Added: 0011480
2022-12-15 18:22 (SW) Jim Chen Note Added: 0011498
2023-01-06 14:39 (ALTech) Sangmin Choi Note Added: 0011696
2023-01-06 14:39 (ALTech) Sangmin Choi File Added: SKBSBLT-191.patch
2023-01-06 19:32 (SW) Jim Chen Note Added: 0011705
2023-01-06 19:33 (SW) Jim Chen Issue Monitored: (SW) Jim Chen
2023-01-30 09:54 (ALTech) Sangmin Choi Note Added: 0011867
2023-01-30 09:54 (ALTech) Sangmin Choi File Added: CSMSKBSBLT-201-Unmute-HDMI.patch
2023-01-30 12:13 (SW) Dean Chiang Note Added: 0011877
2023-01-30 16:20 (ALTech) Sangmin Choi Note Added: 0011882
2023-01-30 16:20 (ALTech) Sangmin Choi File Added: ref_v534r27_D735.xml
2023-01-30 16:20 (ALTech) Sangmin Choi File Added: CSMSKBSBLT-201-Unmute-HDMI-2.patch
2023-01-31 11:30 (SW) Dean Chiang Note Added: 0011909
2023-02-13 16:27 (ALTech) Sangmin Choi Note Added: 0012149
2023-02-13 16:27 (ALTech) Sangmin Choi File Added: BTVSBOX-629-PCR-offset.patch
2023-02-14 14:54 (SW) Dean Chiang Note Added: 0012170
2023-02-21 10:29 (ALTech) Sangmin Choi Note Added: 0012271
2023-02-21 10:29 (ALTech) Sangmin Choi File Added: 0001-BTVV-5675-MAX_KEY_PER_SESSION-26-100.patch
2023-02-21 15:09 (SW) Dean Chiang Note Added: 0012280
2023-02-23 14:46 (ALTech) Sangmin Choi Note Added: 0012340
2023-02-23 14:46 (ALTech) Sangmin Choi File Added: 0001-19.536.904.patch
2023-02-23 16:10 (SW) Dean Chiang Note Added: 0012349
2023-03-02 09:14 (ALTech) Sangmin Choi Note Added: 0012396
2023-03-02 09:14 (ALTech) Sangmin Choi File Added: 0001-19.536.906.patch
2023-03-02 10:37 (SW) Dean Chiang Note Added: 0012400
2023-03-06 09:39 (ALTech) Sangmin Choi Note Added: 0012434
2023-03-06 09:39 (ALTech) Sangmin Choi File Added: 0001-19.536.907.patch
2023-03-06 14:00 (SW) Dean Chiang Note Added: 0012437
2023-03-08 15:04 (ALTech) Sangmin Choi Note Added: 0012467
2023-03-08 15:04 (ALTech) Sangmin Choi File Added: 0001-19.536.908.patch
2023-03-08 15:53 (SW) Jason Ling Assigned To (SW) Dean Chiang => (SW) Jerry Lin
2023-03-08 19:08 (SW) Jerry Lin Note Added: 0012474
2023-03-09 10:31 (ALTech) Sangmin Choi Note Added: 0012479
2023-03-09 14:04 (SW) Jerry Lin Note Added: 0012483
2023-03-10 10:03 (ALTech) Sangmin Choi Note Added: 0012498
2023-03-10 11:09 (ALTech) Sangmin Choi Note Added: 0012500
2023-03-10 11:09 (ALTech) Sangmin Choi File Added: MMCEI-10037-do-not-send-zero-110541.patch
2023-03-10 14:26 (SW) Jerry Lin Note Added: 0012505
2023-03-16 16:27 (ALTech) Sangmin Choi Note Added: 0012556
2023-03-16 16:27 (ALTech) Sangmin Choi File Added: BAIS2-799_stop_start_trace.patch
2023-03-16 19:15 (SW) Jerry Lin Note Added: 0012558
2023-03-21 14:16 (ALTech) Sangmin Choi Note Added: 0012591
2023-03-21 14:16 (ALTech) Sangmin Choi File Added: BAIS2-799_remove_amp_function_from_callback.patch
2023-03-21 16:14 (SW) Jerry Lin Note Added: 0012597
2023-03-27 16:27 (ALTech) Sangmin Choi Note Added: 0012652
2023-03-27 17:13 (SW) Jerry Lin Note Added: 0012656
2023-03-27 20:07 (SW) Jerry Lin Note Added: 0012658
2023-03-28 10:05 (ALTech) Sangmin Choi Note Added: 0012660
2023-04-05 13:12 (ALTech) Sangmin Choi Note Added: 0012721
2023-04-05 13:12 (ALTech) Sangmin Choi File Added: enable_log_timeout.patch
2023-04-05 14:58 (SW) Jerry Lin Note Added: 0012722
2023-04-06 10:47 (ALTech) Sangmin Choi Note Added: 0012737
2023-04-06 10:47 (ALTech) Sangmin Choi File Added: remove_mbuf_from_osal.patch
2023-04-06 18:33 (ALTech) Sangmin Choi Note Added: 0012748
2023-04-07 11:38 (ALTech) Sangmin Choi Note Added: 0012756
2023-04-07 13:40 (SW) Jerry Lin Note Added: 0012757
2023-04-07 15:03 (ALTech) Sangmin Choi Note Added: 0012758
2023-04-20 09:42 (ALTech) Sangmin Choi Note Added: 0012923
2023-04-20 11:05 (ALTech) Sangmin Choi Note Added: 0012926
2023-04-20 11:05 (ALTech) Sangmin Choi File Added: libskbrtsp.so
2023-04-20 16:26 (SW) Jerry Lin Note Added: 0012935
2023-05-10 15:29 (ALTech) Sangmin Choi Note Added: 0013089
2023-05-10 15:29 (ALTech) Sangmin Choi File Added: 0001-add_debug_message_in_AMP_ConnectComp.patch
2023-05-10 18:45 (SW) Jerry Lin Note Added: 0013091
2023-05-15 10:25 (ALTech) Sangmin Choi Note Added: 0013119
2023-05-15 11:05 (SW) Jerry Lin Note Added: 0013121
2023-05-15 15:04 (SW) Jerry Lin Note Added: 0013129
2023-05-16 14:56 (ALTech) Sangmin Choi Note Added: 0013142
2023-05-16 14:56 (ALTech) Sangmin Choi File Added: SKBSBLT-215-test.patch
2023-05-16 17:58 (SW) Jerry Lin Note Added: 0013148
2023-05-22 16:27 (ALTech) Sangmin Choi Note Added: 0013204
2023-05-22 19:25 (SW) Jerry Lin Note Added: 0013205
2023-06-08 12:48 (ALTech) Sangmin Choi Note Added: 0013312
2023-06-08 12:48 (ALTech) Sangmin Choi File Added: change_debug_level.diff
2023-06-08 15:28 (SW) Jerry Lin Note Added: 0013317
2023-06-13 13:30 (ALTech) Sangmin Choi Note Added: 0013348
2023-06-13 13:30 (ALTech) Sangmin Choi File Added: 0001-AMP-event-add-mutex-for-rwlock-to-avoid-it-dead-lock.patch
2023-06-13 15:41 (SW) Jerry Lin Note Added: 0013355
2023-06-22 16:31 (ALTech) Sangmin Choi Note Added: 0013483
2023-06-23 08:30 (SW) Jerry Lin Note Added: 0013485
2023-06-23 08:52 (ALTech) Sangmin Choi Note Added: 0013487
2023-06-23 08:52 (ALTech) Sangmin Choi File Added: SKBSBLT-221-wakeup-time-test.patch
2023-06-23 08:52 (ALTech) Sangmin Choi File Added: outputimage_5004.zip
2023-06-26 08:25 (SW) Jerry Lin Note Added: 0013490
2023-06-27 08:56 (ALTech) Sangmin Choi Note Added: 0013507
2023-06-27 08:56 (ALTech) Sangmin Choi File Added: CSMSKBSBLT-216-debug-01.patch
2023-06-27 14:29 (SW) Jerry Lin Note Added: 0013511
2023-06-29 12:35 (ALTech) Sangmin Choi Note Added: 0013527
2023-06-29 12:35 (ALTech) Sangmin Choi File Added: outputimage_5004-2.zip
2023-06-29 12:35 (ALTech) Sangmin Choi File Added: SKBSBLT-221-wakeup-time-test-2.patch
2023-06-29 12:35 (ALTech) Sangmin Choi File Added: CSMAI2-68-trivial2.patch
2023-06-29 15:51 (SW) Jerry Lin Note Added: 0013530
2023-07-03 10:25 (ALTech) Sangmin Choi Note Added: 0013546
2023-07-03 10:25 (ALTech) Sangmin Choi File Added: CSMAI2-68-trivial.patch
2023-07-03 10:25 (ALTech) Sangmin Choi File Added: CSMAI2-68-trivial2-2.patch
2023-07-03 10:25 (ALTech) Sangmin Choi File Added: outputimage_5045.zip
2023-07-03 16:00 (SW) Jerry Lin Note Added: 0013549
2023-07-04 12:32 (ALTech) Sangmin Choi Note Added: 0013555
2023-07-04 12:32 (ALTech) Sangmin Choi File Added: CSMSKBSBLT-216-Remove-stop-start.patch
2023-07-04 12:32 (ALTech) Sangmin Choi File Added: CSMSKBSBLT-216-thread-lock.patch
2023-07-04 17:05 (SW) Jerry Lin Note Added: 0013562
2023-07-11 12:36 (ALTech) Sangmin Choi Note Added: 0013601
2023-07-11 12:36 (ALTech) Sangmin Choi File Added: CSMAI2-68-trivial2-3.patch
2023-07-11 12:36 (ALTech) Sangmin Choi File Added: CSMAI2-68-trivial-2.patch
2023-07-11 12:36 (ALTech) Sangmin Choi File Added: outputimage_5136.zip
2023-07-11 15:03 (SW) Jerry Lin Note Added: 0013606
2023-07-24 10:42 (ALTech) Sangmin Choi Note Added: 0013677
2023-07-24 10:42 (ALTech) Sangmin Choi File Added: BPM-20920.patch
2023-07-24 15:51 (SW) Jerry Lin Note Added: 0013683
2023-07-31 16:09 (ALTech) Sangmin Choi Note Added: 0013773
2023-07-31 18:14 (SW) Jerry Lin Note Added: 0013777
2023-08-02 09:45 (ALTech) Sangmin Choi Note Added: 0013798
2023-08-02 09:45 (ALTech) Sangmin Choi File Added: BPM-20665.patch
2023-08-02 11:02 (SW) Jerry Lin Note Added: 0013800
2023-08-23 12:48 (ALTech) Sangmin Choi Note Added: 0013956
2023-08-23 12:48 (ALTech) Sangmin Choi File Added: CSMSKBSBLT-211-ignore-the-request.patch
2023-08-23 19:39 (SW) Jerry Lin Note Added: 0013961
2023-08-30 14:27 (ALTech) Sangmin Choi Note Added: 0014031
2023-08-30 17:34 (SW) Jerry Lin Note Added: 0014039
2023-08-30 17:41 (ALTech) Sangmin Choi Note Added: 0014040
2023-08-30 19:02 (SW) Jerry Lin Note Added: 0014041
2023-08-31 12:56 (ALTech) Sangmin Choi Note Added: 0014049
2023-08-31 15:14 (SW) Jason Ling Note Added: 0014053
2023-09-04 13:38 (ALTech) Sangmin Choi Note Added: 0014068
2023-09-04 13:38 (ALTech) Sangmin Choi File Added: CSMSKBSBLT-211-ignore-the-request_v2.patch
2023-09-04 17:36 (SW) Jerry Lin Note Added: 0014072
2023-10-11 10:16 (ALTech) Wooshin Kang Note Added: 0014260
2023-10-11 10:16 (ALTech) Wooshin Kang File Added: 0009-auro-use-headroom-for-demo.patch
2023-10-11 10:18 (ALTech) Wooshin Kang Note Added: 0014261
2023-10-11 10:18 (ALTech) Wooshin Kang File Added: SKB_STB_Home_UI5.0_AI2MAX_v1.22.0_vc1242_r23330_foxconn_20230907.apk
2023-10-11 15:45 (ALTech) Wooshin Kang Note Added: 0014265
2023-10-11 15:45 (ALTech) Wooshin Kang File Added: SKB_STB_Home_UI5.0_AI2MAX_v1.22.0_vc1242_r23331_foxconn_20231011.apk
2023-10-11 19:31 (SW) Jerry Lin Note Added: 0014268
2023-10-20 08:35 (ALTech) Wooshin Kang Note Added: 0014354
2023-10-20 08:35 (ALTech) Wooshin Kang File Added: auro_headroom.7z
2023-10-20 13:52 (SW) Jerry Lin Note Added: 0014359
2023-10-23 16:06 (SW) Jerry Lin Note Added: 0014379
2023-11-03 08:49 (ALTech) Sangmin Choi Note Added: 0014459
2023-11-03 08:49 (ALTech) Sangmin Choi File Added: 0002-volume_table_change.diff
2023-11-03 08:49 (ALTech) Sangmin Choi File Added: 0001-volume_table_change.diff
2023-11-03 12:03 (SW) Jerry Lin Note Added: 0014463
2023-11-07 09:30 (ALTech) Wooshin Kang Note Added: 0014483
2023-11-07 09:30 (ALTech) Wooshin Kang File Added: auro_headroom_11:7.7z
2023-11-07 14:34 (SW) Jerry Lin Note Added: 0014487
2023-11-13 09:45 (ALTech) Sangmin Choi Note Added: 0014511
2023-11-13 09:45 (ALTech) Sangmin Choi File Added: 135759_c39a9af8.patch
2023-11-13 11:29 (SW) Jerry Lin Note Added: 0014513
2023-11-14 09:02 (ALTech) Wooshin Kang Note Added: 0014523
2023-11-14 09:58 (SW) Jerry Lin Note Added: 0014526
2023-11-14 09:58 (SW) Jerry Lin File Added: CSMSKBSBLT-228.patch
2023-11-14 16:33 (ALTech) SY Yoon Note Added: 0014537
2023-11-21 08:56 (ALTech) Wooshin Kang Note Added: 0014593
2023-11-21 09:14 (SW) Jerry Lin Note Added: 0014594
2023-11-27 15:28 (ALTech) Sangmin Choi Note Added: 0014633
2023-11-27 15:28 (ALTech) Sangmin Choi File Added: BFX-UA300_19.540.22_test_BPM-18714.xml
2023-11-27 19:37 (SW) Jerry Lin Note Added: 0014637
2023-11-29 16:13 (ALTech) Sangmin Choi Note Added: 0014651
2023-11-29 16:13 (ALTech) Sangmin Choi File Added: zapping_test.diff
2023-12-11 11:29 (SW) Jason Ling Note Added: 0014698
2023-12-18 15:48 (ALTech) Sangmin Choi Note Added: 0014762
2023-12-18 15:48 (ALTech) Sangmin Choi File Added: debug_message_AudioStreamNonTunnelOut.diff
2023-12-19 09:52 (SW) Jason Ling Note Added: 0014766
2023-12-19 09:52 (SW) Jerry Lin Note Added: 0014767
2024-07-11 13:48 (ALTech) Sangmin Choi Assigned To (SW) Jerry Lin => (ALTech) Sangmin Choi
2024-07-11 13:48 (ALTech) Sangmin Choi Status assigned => closed